我不明白是什么原因使这两个用 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
)不会t 打开并在 Firefox 19 中出现错误:
错误:NS_ERROR_NOT_AVAILABLE:组件返回失败代码:0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIDOMJSWindow.open],
在 IE8 中我得到错误:
调用的对象已与其客户端断开连接,
在 Chrome 25 中,我没有收到任何错误。
执行脚本 2(function f()
创建新窗口对象,将该对象的引用分配给变量w
,关闭创建的窗口,然后尝试重新打开它)不会在浏览器中导致任何错误,但在 Firefox f()
中会重新打开关闭的弹出窗口,而在IE 和 Chrome 的弹出窗口 ( w
) 保持关闭。
您能否尝试这两个脚本并帮助我理解这种奇怪行为的原因?