用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 相关文章推荐
js 操作符实例代码
Oct 24 Javascript
妙用Jquery的val()方法
Jun 27 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
Mar 22 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
Sep 02 Javascript
javascript仿php的print_r函数输出json数据
Sep 13 Javascript
js实现类似新浪微博首页内容渐显效果的方法
Apr 10 Javascript
js文本框走动跑马灯效果代码分享
Aug 25 Javascript
javascript使用Promise对象实现异步编程
Mar 01 Javascript
webpack学习--webpack经典7分钟入门教程
Jun 28 Javascript
详解webpack和webpack-simple中如何引入css文件
Jun 28 Javascript
react-native ListView下拉刷新上拉加载实现代码
Aug 03 Javascript
vue element-ui中table合计指定列求和实例
Nov 02 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 expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
2014/04/09 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
php实现的顺序线性表示例
2019/05/04 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
javascript淡入淡出效果的实现思路
2012/03/31 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
2013/03/18 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
2014/09/26 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
2016/06/08 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
input框中的name和id的区别
2016/11/16 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
Centos6.8下Node.js安装教程
2017/05/12 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
Python实现Event回调机制的方法
2019/02/13 Python
python 字符串追加实例
2019/07/20 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
django中瀑布流写法实例代码
2019/10/14 Python
django orm模块中的 is_delete用法
2020/05/20 Python
Python调用飞书发送消息的示例
2020/11/10 Python
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
2014年消防工作实施方案
2014/02/20 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
股东授权委托书范本
2014/09/13 职场文书