JavaScript--检查一个窗口是否存在

检查一个窗口是否存在
 

  当你创建一个新窗口时,给open()方法的返回值分配一个变量非常重要。比如,下面的语句创建一个新

窗口,然后立即关闭它:
  win = window.open("http://www.docjs.com/", "js");
  win.close();

Window对象
  每一个浏览器窗口都与一个window对象对应,所以,当你想引用当前窗口时,你应该使用window对象。下

面的语句设置当前窗口的URL:
  window.location.href = "http://www.docjs.com/";
  当你在脚本程序中放置这样一个语句时,你不需要指定window对象,因为当前窗口的存在是默认的:
  location.href = "http://www.docjs.com/";
  注意,self等价于window,所以,self.close()实际上就等于window.close()。


  当你想操纵一个窗口时,你必须确认它是存在的。
    在为window.open()方法定义一个变量时,要将它定义为全局变量并设置为null。记住,open()方法返

回新窗口的window对象。这里是一个例子:
  var win = null;
  function launchWindow() {
    win = window.open();
    // statements that refer to the new window go here
  }


  如果你想对新窗口执行一个操作,你首先应该检查变量win是否为null:
  // if win exists, move the window
  if(win) win.moveTo(0, 0);


    open "属性"
   

现在你知道了浏览器实际创建了新窗口,但是它仍然存在吗?你需要确认可用的窗口的确拥有一个真正的windo

w对象。既然每个window对象对应于一个open()方法,你就可以通过对象探测检查到这个方法:
  // 如果win.open存在,就移动窗口
  if(win.open) win.moveTo(0, 0);

  注意,条件表达式是一个函数引用,不是一个函数调用;还有,除非你确认win存在,你不应该试图估计wi

n.open。下面的语句描述了正确的执行方法:
  // if win and win.open exist, move the window
  if(win && win.open) win.moveTo(0, 0);

  由于&&是一个短操作符号,如果第一个参数(win)对应于true,那么结果就取决于第二个数值。如果第二

个参数是false,那么整个表达式结果就是false。这是一个很重要的行为,因为如果win不存在,那么表达式wi

n.open就会产生一个错误。


    closed 属性
  一个window对象的一些方法,例如close(),即使当窗口已经关闭时也能被执行,同时另外一些却不能(比

如moveTo())。但是更糟的是,Internet Explorer和Navigator经常有不同的行为。而且,预测一定操作的结

果经常是非常困难的,即使你以前已经做过类似的尝试。我们将告诉你如何克服这些困难,方法就是介绍一个

在交叉浏览器中能应用的语句,它将检查一个给定的窗口是否被打开。

  window.closed属性是一个Boolean型数值,它定义了是否窗口已经被关闭。当窗口被关闭时,window对象

依然存在,并且它的closed属性被设置为true。

  使用closed来判断打开的窗口以及仍能够被引用(从window.open方法返回的数值)的窗口是否仍然打开着

。当窗口关闭时,你不应该试图再操纵它。因为window.closed仅仅被Internet Explorer 4、Navigator 3 和

高版本所支持,所以你应该注意前面的版本问题。我们将使用下面的代码:
  // if win and win.open exist, and win.closed isn''t true, move the window
  if (win && win.open && !win.closed) win.moveTo(0, 0);

  Internet Explorer 3 和 Navigator 2 不支持 closed 方法,所以它在Boolean型表达式中等价于false (

就像其他不存在地属性一样,比如 window.tomershiran)。

转载于:https://www.cnblogs.com/xiaodi/archive/2005/03/27/126810.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值