你目前正处于脱机状态,正在等待 Internet 重新连接

错误: window.closed 属性将返回不正确的值

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 241109
不再更新的 KB 内容免责声明
本文介绍那些 Microsoft 不再提供支持的产品。因此本文按“原样”提供,并且不再更新。
症状
父窗口打开子窗口使用 window.open 呼叫和 $ 父或子需要知道何时的子级还是父级窗口分别,已被关闭时使用 window.closed 属性。

opener 属性是指窗口打开当前的 (使用 window.open 方法调用)。当子窗口检查 opener.closed 属性时,它为 false,当父项已打开,并且 true 否则为 ; 也就是被反转返回值。

当父项检查使用子窗口的关闭属性子窗口的状态时,将返回相同的不正确结果。
解决方案
为子解决方法是让父维护正确的状态的父窗口的子窗口中设置一个变量。子项然后使用此变量,而不是 opener.closed 属性。

父项的解决方法是将否定子窗口的关闭属性。为更安全,建议使用的子窗口的相同的逻辑,以确保在逻辑不会中断时这种行为固定在更高版本的 Internet Explorer 中

下面的 HTML 代码演示该 bug 以及如何解决该问题。
  1. 将以下文件保存为 Parent.htm:
    <html><head><script>var childWin;var childOpen = false;</script></head><body BGCOLOR="white"><input type="button" value="Open Child" id="button1" name="button1" onclick="OpenChild()" ><p><input type="button" value="Is Child Open(Bug)?" id="button2" name="button2" onclick="alert(childWin.closed)"><p><input type="button" value="Is Child Open(Fix)?" id="button3" name="button3" onclick="alert(childOpen)"><script>function OpenChild(){	childWin = window.open ("Child.htm")	childOpen = true;}function UpdateChild(){	//Only if child window is still open, set the parentOpen property	if (childOpen == true)	{		childWin.parentOpen = false	}}window.onunload = UpdateChild;</script></body></html>					
  2. 将以下文件保存为 Child.htm:
    <html><head><script>var parentOpen = true</script></head><body BGCOLOR="white"><input type="button" value="Is Parent Open(Bug)?" id="button1" name="button1" onclick="alert(window.opener.closed)"><input type="button" value="Is Parent Open?" id="button2" name="button2" onclick="alert(parentOpen)"><script>window.onunload = UpdateParent;function UpdateParent(){	//Only if the parent is open, update the status of the child window	if (parentOpen)	{		window.opener.childOpen = false;	}}</script></body></html>					
  3. 定位到 Parent.htm,然后单击 打开子 按钮以打开子窗口。
  4. 之前和之后关闭子窗口重现 bug,并测试该修补程序,请单击 是子打开 按钮。或者,单击 是父打开 按钮上之前和之后关闭父窗口的测试。
状态
Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的错误。
参考
有关为 Microsoft Internet Explorer 中开发的基于 Web 的解决方案的详细信息请访问以下 Microsoft 网站:(c) Microsoft Corporation 1999,保留的所有权限。由 Kusuma Vellanki,Microsoft 公司的贡献。

关闭窗口 opener

警告:本文已自动翻译

属性

文章 ID:241109 - 上次审阅时间:05/11/2006 11:56:20 - 修订版本: 3.0

Microsoft Internet Explorer 4.0 128-Bit Edition, Microsoft Internet Explorer 4.01 Service Pack 2, Microsoft Internet Explorer 5.0, Microsoft Internet Explorer (Programming) 6.0

  • kbmt kbbug kbdhtml kbdocfix kbfaq kbpending KB241109 KbMtzh
反馈