您目前已離線,請等候您的網際網路重新連線

注意: window.closed 屬性會傳回不正確的值

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:241109
依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。
徵狀
window.closed 屬性用父視窗會開啟子視窗使用 window.open 呼叫和父代或子需要知道當 [子系] 或 [父] 視窗分別,已關閉時。

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 Corporation 的貢獻。

關閉視窗 opener

Warning: This article has been translated automatically

內容

文章識別碼: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
意見反應