JavaScript窗口功能指南之检查一个窗口是否存在

原创 2001年03月22日 02:51:00
JavaScript窗口功能指南之检查一个窗口是否存在
(作者:听风编译 2001年01月19日 11:35)

  当你创建一个新窗口时,给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);

  注意,null等于false,同时任何其他合法的对象等价于true。如果win等于true,你就知道了它不是null,这意味着新窗口成功地创建了。

open "属性"
现在你知道了浏览器实际创建了新窗口。但是它仍然存在吗?不是必须的。你需要确认可用的窗口的确拥有一个真正的window对象。既然每个window对象对应于一个open()方法,你就可以通过对象探测检查到这个方法:
  // 如果win.open存在,就移动窗口

  if (win.open) win.moveTo(0, 0);

  变量win对照窗口的window对象,所以win.open对应window的window.open方法。注意,条件表达式是一个函数引用,不是一个函数调用。除非你确认win存在,你不应该试图估计win.open。下面的语句描述了正确的执行方法:

  // if win and win.open exist, move the window

  if (win && win.open) win.moveTo(0, 0);

  由于&&是一个短操作符号,如果第一个参数(win)对应于true,那么结果就取决于第二个数值。如果第二个参数是false,那么整个表达式结果就是false。这是一个很重要的行为,因为如果win不存在,那么表达式win.open就会产生一个错误。

closed 属性
  由于JavaScript的第一个版本,浏览器窗口成为一个非常困难的问题。比如,一个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)。


JavaScript窗口功能指南之检查一个窗口是否存在

标题     JavaScript窗口功能指南之检查一个窗口是否存在    hktl(转贴) 关键字     JavaScript窗口功能 出处     http://www....
  • rickjelly2004
  • rickjelly2004
  • 2004年07月01日 10:43
  • 1046

JavaScript窗口功能指南之检查一个窗口是否存在

JavaScript窗口功能指南之检查一个窗口是否存在(作者:听风编译 2001年01月19日 11:35)  当你创建一个新窗口时,给open()方法的返回值分配一个变量非常重要。比如,下面的语句创...
  • baisun
  • baisun
  • 2004年12月08日 08:49
  • 605

JavaScript窗口功能指南之检查一个窗口是否存在

当你创建一个新窗口时,给open()方法的返回值分配一个变量非常重要。比如,下面的语句创建一个新窗口,然后立即关闭它:   win = window.open("http://www.docjs.co...
  • alex197963
  • alex197963
  • 2007年05月06日 00:24
  • 611

判断特定窗口是否存在、线程中获取获得一个顶层窗口的句柄

1.判断窗口是否还存在:实例: HWND hWnd;//窗口句柄 if(!IsWindow(hWnd))   //检查窗口是否已被关闭 { //处理程序 }2.获得一个顶层窗口的句柄:  函数...
  • u012514681
  • u012514681
  • 2013年11月14日 16:44
  • 1525

VC中判断窗体是否存在

我们通过New创建的窗体(Dialog),在使用或销毁时,都需要判断其是否存在,如我们窗体类为:CMyDlg,变量为pDlg。判断窗体是否真是存在则if( (NULL != pDlg) && (::I...
  • alwaysrun
  • alwaysrun
  • 2008年11月12日 15:43
  • 2875

JavaScript窗口功能指南之操纵窗口

一旦你得到了表示窗口的变量,你就能通过各种方法来操纵它。在前面的介绍中,我们讨论过close()方法:   win = window.open("http://www.docjs.com/", "js...
  • alex197963
  • alex197963
  • 2007年05月06日 00:28
  • 493

【PB】如何判断PBL中是否存在指定的对象

一、如何推断某指定WINDOW是否存留? ClassDefinition cd_windef cd_windef = FindClassDefinition("w_xxx") if is...
  • sqlove
  • sqlove
  • 2014年02月27日 10:23
  • 1636

C# 怎么判断一个窗体打开

问题运行时出现Form1,然后点击一个按钮,就会跳出窗体Form2.如果再点击的话还会跳出一个窗口(因为我用的是new form ,重新创建了一个form2,所以会一直跳。) 我要的效果就是只能出来...
  • qq_36196748
  • qq_36196748
  • 2017年12月06日 09:51
  • 329

判断窗口是否关闭

package c09; import javax.swing.*; import java.awt.*; import java.awt.event.*; publi...
  • qq_40560963
  • qq_40560963
  • 2017年11月08日 21:02
  • 175

js判断当前窗口是否是顶级窗口

if (window.top !== window.self) { // are you trying to put self in an iframe? try { if (window...
  • asp89007342
  • asp89007342
  • 2012年06月19日 17:58
  • 2150
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript窗口功能指南之检查一个窗口是否存在
举报原因:
原因补充:

(最多只允许输入30个字)