用javascript父窗口控制只弹出一个子窗口

2016-02-19 10:10 6 1 收藏

今天图老师小编要向大家分享个用javascript父窗口控制只弹出一个子窗口教程,过程简单易学,相信聪明的你一定能轻松get!

【 tulaoshi.com - Web开发 】

近来网上经常流传一些关于如何在父窗口控制只弹出一个子窗口 问题,我查看了一些,大部分都是只能解决部分或者很麻烦,还不算完美。比如有人是实现的这样,使用的是Cookie,以下是例子。 
主页上做了一个弹出窗口,如何使其只弹出一次,返回主页时不再弹出了。 
--------------------------------------------------------------- 

script 
window.open("http://www.yeboss.com.cn","yeboss","width=300,height=400") 
/script 
--------------------------------------------------------------- 

cookie 
--------------------------------------------------------------- 


HEAD 

SCRIPT LANGUAGE="JavaScript" 

!-- Begin 
var expDays = 1; // number of days the cookie should last 

var page = "only-popup-once.html"; 
var windowprops = "width=300,height=200,location=no,toolbar=no,menubar=no,scrollbars=no,resizable=yes"; 

function GetCookie (name) { 
var arg = name + "="; 
var alen = arg.length; 
var clen = document.cookie.length; 
var i = 0; 
while (i  clen) { 
var j = i + alen; 
if (document.cookie.substring(i, j) == arg) 
return getCookieVal (j); 
i = document.cookie.indexOf(" ", i) + 1; 
if (i == 0) break; 

return null; 

function SetCookie (name, value) { 
var argv = SetCookie.arguments; 
var argc = SetCookie.arguments.length; 
var expires = (argc  2) ? argv[2] : null; 
var path = (argc  3) ? argv[3] : null; 
var domain = (argc  4) ? argv[4] : null; 
var secure = (argc  5) ? argv[5] : false; 
document.cookie = name + "=" + escape (value) + 
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 
((path == null) ? "" : ("; path=" + path)) + 
((domain == null) ? "" : ("; domain=" + domain)) + 
((secure == true) ? "; secure" : ""); 

function DeleteCookie (name) { 
var exp = new Date(); 
exp.setTime (exp.getTime() - 1); 
var cval = GetCookie (name); 
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); 

var exp = new Date(); 
exp.setTime(exp.getTime() + (expDays*24*60*60*1000)); 
function amt(){ 
var count = GetCookie(’count’) 
if(count == null) { 
SetCookie(’count’,’1’) 
return 1 

else { 
var newcount = parseInt(count) + 1; 
DeleteCookie(’count’) 
SetCookie(’count’,newcount,exp) 
return count 
   } 

function getCookieVal(offset) { 
var endstr = document.cookie.indexOf (";", offset); 
if (endstr == -1) 
endstr = document.cookie.length; 
return unescape(document.cookie.substring(offset, endstr)); 


function checkCount() { 
var count = GetCookie(’count’); 
if (count == null) { 
count=1; 
SetCookie(’count’, count, exp); 

window.open(page, "", windowprops); 


else { 
count++; 
SetCookie(’count’, count, exp); 
   } 

//  End -- 
/script 


BODY OnLoad="checkCount()" 
这个是网上随便摘的一个例子,是不是感觉很多也很难看懂呢,下面我给大家说一种新方法,保证好看好使。

script language="JavaScript" type="text/JavaScript"
!--  Copyright fenggang at 2007/3/23
var w=null;
function MM_openBrWindow(theURL,winName,features) { //v2.0
  if(w!=undefined&&isOpen()){
   w.close();
  }
   w=window.open("",winName,features);
   w.location.replace(theURL);
}
function isOpen()
{
  try
  {
  w.document;
  return true;
  }
  catch(ex)
  {}

  return false;
}
//--
/script
这个MM_openBrWindow()函数名是在Dreamweaver中常用的弹出窗口函数名,将这段代码放进页面里
然后再做弹出窗口就只能探出一个窗口了,以上是精髓部分,下面是完整的一个测试页的代码,试试看吧。
%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
html xmlns="http://www.w3.org/1999/xhtml"
head
meta http-equiv="Content-Type" content="text/html; charset=gb2312" /
title无标题文档/title
script language="JavaScript" type="text/JavaScript"
!--  Copyright fenggang at 2007/3/23
var w=null;
function MM_openBrWindow(theURL,winName,features) { //v2.0
  if(w!=undefined&&isOpen()){
   w.close();
  }
   w=window.open("",winName,features);
   w.location.replace(theURL);
}
function isOpen()
{
  try
  {
  w.document;
  return true;
  }
  catch(ex)
  {}

  return false;
}
//--
/script
/head
body
a href="javascript:;" onClick="MM_openBrWindow(show.asp’,’’,’scrollbars=yes,resizable=yes,width=570,height=500’)"title/a
/body
/html

来源:https://www.tulaoshi.com/n/20160219/1593641.html

延伸阅读
如果你用 MFC 编写过多文档界面(MDI)Windows 程序,那么肯定知道:如果父窗口标题为PCaption,子窗口标题为CCaption,那么每当子窗口最大化并处于激活状态时,子窗口标题一般都会与父窗口标题合二为一,变成PCaption-[CCaption]。 这是一种 MDI 的默认行为。用 C# 编写多文档界面程序也不例外。很多用户都不喜欢这种缺省特性,往往想用定...
在网上冲浪时进入一些网站会出现弹出窗口。它可能是站长对你的亲切问候,也可能是网站的重要通告、网站广告之类的。但用得不好会让人产生厌烦心理。如何才能让弹出窗口发挥作用,而又不影响浏览者浏览页面呢? 一般的弹出窗口都需要你去关闭它,浏览者一定会觉得很麻烦。如果能让它自己关闭那该多好。要实现这种效果其实很简单, 1、...
标签: ASP
  一个不太让人讨厌的自动弹出窗口 (原文:http://www.siteexperts.com/tips/backend/ts15/page1.asp)     自动弹出窗口是一个让人讨厌的事情,为什么我们用它来显示我们的调查表呢?     用弹出窗口来显示调查表,被认为是达到我们收集访问用户信息的最方便快捷的方法。当制作出第一份调查表...
标签: Web开发
经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,或者按一个连接或按钮弹出,通常在这个窗口里会显示一些注意事项、版权信息、警告、欢迎光顾之类的话或者作者想要特别提示的信息。其实制作这样的页面效果非常的容易,只要往该页面的HTML里加入几段Javascript代码即可实现。下面俺就带您剖析它的奥秘。 1、最...
标签: Web开发
1.无提示刷新网页 大家有没有发现,有些网页,刷新的时候,会弹出一个提示窗口,点确定才会刷新。 而有的页面不会提示,不弹出提示窗口,直接就刷新了. 如果页面没有form,则不会弹出提示窗口。如果页面有form表单, a) form method="post" ... 会弹出提示窗口 b) form method="get" ... 不...

经验教程

750

收藏

14
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部