调试器未在Javascript中单步通过window.close
我正在使用谷歌浏览器,我有一个Javascript代码,可以打开一个弹出窗口,并在完成工作后关闭它。我的代码与此类似:调试器未在Javascript中单步通过window.close,javascript,google-chrome,Javascript,Google Chrome,我正在使用谷歌浏览器,我有一个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] 关闭窗口后,我有更多的代码,但
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]
关闭窗口后,我有更多的代码,但调试器从未在该点之后执行任何步骤。我甚至试着把
调试器代码>在关闭后
但无效。不过窗户关得很好
关闭弹出窗口后如何执行脚本?(显然,代码属于未关闭的父窗口)尝试将代码移动到.onbeforeuload
函数,如下所示:
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
这似乎是Chrome中的一个bug
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()
之后立即停止调试器,除非先执行了其他代码,例如赋值或控制台.log
。即使在window.close()
之后的第一条语句上设置断点也不会导致调试器再次中断,但在紧跟window.close()之后的一行上放置断点将导致调试器中断
也许这不是一个令人满意的答案,但除非Chrome团队开始堆叠自己,或者Chrome项目出现了一个bug,否则我怀疑我们会得到更多…您可以从关闭按钮调用另一个javascript函数,然后将内容设置为visible@BilalZafar哪个关闭按钮?什么内容?我从来没有提到过“关闭按钮”或设置内容之类的东西?在评论之前,请先阅读问题。“关闭窗口后我有更多代码”这是什么?@BilalZafar这完全不相关。甚至删除所有代码,只放入调试器代码>关闭后不会被点击。控制台中是否有任何错误?有趣。。似乎我在这里偶然发现了一个真正的角落案例。