我正在使用谷歌浏览器,我有一个Javascript代码,可以打开一个弹出窗口,并在工作完成后关闭它。我的代码与此类似:
myWindow = window.open(...); //it opens successfully.
[code here is executed successfully]
myWindow.close(); //can't get after this point
[some more code that I can't reach]
关闭窗口后我有更多的代码,但调试器从那时起就不会执行。我甚至试过在debugger;
之后放close
但是没有用。然后,窗口关闭。
关闭弹出窗口后如何执行脚本? (显然,代码由不关闭的)父窗口拥有
答案 0 :(得分:1)
尝试将您的代码移动到.onbeforeunload
函数,如下所示:
myWindow = window.open(...); //it opens successfully.
myWindow.onbeforeunload = function() {
[some more code that I can't reach]
}
[code here is executed successfully]
myWindow.close(); //can't get after this point
答案 1 :(得分:1)
这似乎是Chrome中的一个错误。
debugger; // Stops
var x = '0'; // F10
console.log(x); // F10
var mW = window.open(); // F10
x = '1'; // F10
console.log(x); // F10
mW.close(); // F10
debugger; // Skipped
x = '2';
debugger; // Stops
console.log(x); // F10
看起来你不能在window.close()
之后立即停止在调试器上,除非先执行其他一些代码 - 例如分配或console.log
。甚至在 window.close()
之后的第一个语句上设置断点也不会导致调试器再次中断 - 但是在之后的行上放置一个断点window.close()
将导致调试程序中断。
可能不是一个令人满意的答案,但除非Chrome团队自己筹码,或者Chromium项目出现了错误,否则我怀疑我们会得到更多......