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


Posted in Javascript onApril 10, 2007

近来网上经常流传一些关于如何在父窗口控制只弹出一个子窗口 问题,我查看了一些,大部分都是只能解决部分或者很麻烦,还不算完美。比如有人是实现的这样,使用的是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>

Javascript 相关文章推荐
javascript控制frame,iframe的src属性代码
Dec 31 Javascript
JS模块与命名空间的介绍
Mar 22 Javascript
jQuery实现友好的轮播图片特效
Jan 12 Javascript
关于网页中的无缝滚动的js代码
Jun 09 Javascript
JS动态给对象添加属性和值的实现方法
Oct 21 Javascript
jquery ajaxfileupload异步上传插件使用详解
Feb 08 Javascript
bootstrap PrintThis打印插件使用详解
Feb 20 Javascript
React利用插件和不用插件实现双向绑定的方法详解
Jul 03 Javascript
js CSS3实现卡牌旋转切换效果
Jul 04 Javascript
对vux点击事件的优化详解
Aug 28 Javascript
vue 验证两次输入的密码是否一致的方法示例
Sep 29 Javascript
Java无向树分析 实现最小高度树
Apr 09 Javascript
javascript 控制弹出窗口
Apr 10 #Javascript
javascript应用:Iframe自适应其加载的内容高度
Apr 10 #Javascript
用javascript动态调整iframe高度的代码
Apr 10 #Javascript
Javascript下的keyCode键码值表
Apr 10 #Javascript
用javascript控制iframe滚动的代码
Apr 10 #Javascript
经常用到的JavasScript事件的翻译
Apr 09 #Javascript
在JavaScript中通过URL传递汉字的方法
Apr 09 #Javascript
You might like
PHP 手机归属地查询 api
2010/02/08 PHP
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
看了就知道什么是JSON
2007/12/09 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
使用python 获取进程pid号的方法
2014/03/10 Python
python实现根据图标提取分类应用程序实例
2014/09/28 Python
优化Python代码使其加快作用域内的查找
2015/03/30 Python
极简的Python入门指引
2015/04/01 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
Python多层装饰器用法实例分析
2018/02/09 Python
python计算两个数的百分比方法
2018/06/29 Python
简单谈谈python基本数据类型
2018/09/26 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
Python IDLE或shell中切换路径的操作
2020/03/09 Python
在keras里实现自定义上采样层
2020/06/28 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
浅析Python 责任链设计模式
2020/09/11 Python
python 生成正态分布数据,并绘图和解析
2020/12/21 Python
孕妇内衣和胸罩:Cake Maternity
2018/07/16 全球购物
工业自动化专业毕业生推荐信
2013/11/18 职场文书
求职自我推荐信
2014/06/25 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
企业安全生产检查制度
2015/08/06 职场文书
macos系统如何实现微信双开? mac登录两个微信以上微信的技巧
2022/07/23 数码科技
win11开机发生死循环重启怎么办?win11开机发生死循环重启解决方法
2022/08/05 数码科技