我不明白是什么原因使这两个用 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) 保持关闭。
您能否尝试这两个脚本并帮助我理解这种奇怪行为的原因?