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

 更新时间:2007年04月10日 00:00:00   作者:  
近来网上经常流传一些关于如何在父窗口控制只弹出一个子窗口 问题,我查看了一些,大部分都是只能解决部分或者很麻烦,还不算完美。比如有人是实现的这样,使用的是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 es6中var、let以及const三者区别案例详解

    JavaScript es6中var、let以及const三者区别案例详解

    这篇文章主要介绍了JavaScript es6中var、let以及const三者区别案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • html文本框提示效果的示例代码

    html文本框提示效果的示例代码

    在html文本框中显示提示效果,以方便用户的输入,比如在输入姓名时,会自动提示 姓名长度最多16个字符,是不是很酷哦。快来看看吧
    2014-06-06
  • JavaScript常用工具函数大全

    JavaScript常用工具函数大全

    这篇文章主要介绍了JavaScript常用工具函数,汇总整理了各种JavaScript常用工具函数,包括获取、判断、转换、设置等相关功能函数的定义与使用方法,需要的朋友可以参考下
    2020-05-05
  • 详解javascript对数组和json数组的操作

    详解javascript对数组和json数组的操作

    这篇文章主要介绍了javascript对数组和json数组的操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • js 判断附件后缀的简单实现方法

    js 判断附件后缀的简单实现方法

    下面小编就为大家带来一篇js 判断附件后缀的简单实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • 利用404错误页面实现UrlRewrite的实现代码

    利用404错误页面实现UrlRewrite的实现代码

    要求:网站编码为utf-8,不适用于GB2312; 替换字符的正则可以自己增加和修改,以适合自己的网站;
    2008-08-08
  • JS动态改变浏览器标题的方法

    JS动态改变浏览器标题的方法

    这篇文章主要介绍了JS动态改变浏览器标题的方法,涉及JavaScript页面元素结合时间函数动态操作的相关技巧,需要的朋友可以参考下
    2016-04-04
  • Next.js服务端渲染超时导致生产事故的问题排查和解决办法

    Next.js服务端渲染超时导致生产事故的问题排查和解决办法

    Next.js是一个基于React的开源框架,用于构建服务端渲染(SSR)的Web应用程序,它简化了许多复杂的配置,让开发者可以专注于编写应用逻辑而不是基础设施,前几天公司平台首页崩溃了 504 Time-out,这里记录一下问题排查和解决的过程,需要的朋友可以参考下
    2025-03-03
  • uniapp自定义网络检测组件项目实战总结分析

    uniapp自定义网络检测组件项目实战总结分析

    这篇文章主要为大家介绍了uniapp自定义网络检测组件项目实战总结分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • JS数组循环的方式以及效率分析对比

    JS数组循环的方式以及效率分析对比

    本文详细讲解了JS数组循环的方式以及效率分析对比,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-11-11

最新评论