我不明白是什麼原因使得用JavaScript編寫這兩個腳本的行爲有所不同。試圖重新打開關閉的彈出窗口
腳本1
var w;
function f1() {
w = window.open("pg1.html","wind","left=0,top=0,width=480,height=480");
}
function f2() {
w.close();
}
function f3() {
w.open("pg1.html","wind","left=0,top=0,width=480,height=480");
}
腳本2
function f() {
var w = window.open("pg1.html","wind","left=0,top=0,width=480,height=480");
w.close();
w.open("pg1.html","wind","left=0,top=0,width=480,height=480");
}
在腳本1的情況下,如果我執行function f1()
,然後f2()
(你可以看到f1()
創建新的窗口對象並分配參考該對象爲變量w
,f2()
關閉由f1()
創建的窗口對象),然後嘗試執行功能f3()
,關閉彈出窗口(w
)不打開並在Firefox 19,我得到錯誤:
Error: NS_ERROR_NOT_AVAILABLE: Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIDOMJSWindow.open],
在IE8中,我得到錯誤:
The object invoked has disconnected from its clients,
在Chrome中25我沒有得到任何錯誤。腳本2的
執行(function f()
創建新窗口對象,分配參考該目的是可變w
,關閉創建的窗口,然後嘗試重新打開)不會導致在瀏覽器中的任何錯誤,但在Firefox f()
品牌關閉彈出窗口重新打開,而在IE和Chrome中,彈出窗口(w
)仍然關閉。
請您試試這兩個腳本,並幫助我理解這種奇怪行爲的原因?
我之所以沒有在Chrome中出現錯誤,是因爲我使用--allow-file-access-from-files標誌運行了Chrome。如果沒有這個標誌,我會在執行'f1()'和'f2()'後執行'f3()'時在Chrome中出現以下錯誤消息:Uncaught TypeError:Object [object global]沒有方法'open'。但是爲什麼Firefox在執行script2(函數'f()')時重新打開關閉窗口? – user2227119
+1 ......「這個問題意味着什麼」 – Algorath