在控制台,Chrome和Firefox中,按Ctrl + C的等效功能是什么?在实现各种算法时,我经常在Javascript中写一些不退出的buggy(while
)循环,导致浏览器冻结。重新加载不起作用,点击关闭该选项卡的小X不会执行任何操作,并且在一段时间内(字面上)我已经失去了内存,系统正在交换,并且我要离开休息一下。你如何在浏览器中断JS?
回答
脚本标签有一个Ctrl + C
为JavaScript没有这样的事情。执行JavaScript的浏览器通常会保护自己。如果任何JavaScript挂起,他们会抛出一个对话框询问用户是否想要停止JavaScript。
超时时间通常可以在浏览器的设置中找到。您可以在这里找到如何为FireFox执行此操作:http://www.trixya.net/index.php/internet/how-to-set-javascript-timeout-in-firefox
当我的系统已经交换时,他们的确会抛出该对话。 – skrat 2012-03-13 16:26:21
在Chrome中,您可以点击Shift+ESC
(或右键单击标题栏并打开Chrome任务管理器),并终止与挂起选项卡关联的进程。这将在关闭选项卡时不起作用。
需要注意的是,Chrome有时会将多个标签简化为一个进程,这会终止与进程相关的所有标签。
另一种方法,你可以去避免while
环吊的浏览器是写这样的代码(你可以把它拿出来测试后):
var maxIterations = 100000;
while (foo) {
if (!maxIterations--) throw new Error('Max iterations hit, aborting.');
// do stuff
}
右击Chrome的任务管理器,并选择上下文菜单底部的项目,以显示一个奇怪的复活节彩蛋。
从一点点的见解我到您的工作,我将如何着手的方法是:
- 只执行像按钮单击事件的脚本。这将运行脚本防止
onload
- Chrome可让您在您的
js
代码中设置断点在开发工具
在浏览器中运行Javascript代码没有真正的“中断器”。 ECMAscript在所谓的“UI线程”中执行,这意味着所有渲染的东西都发生在ECMAscript代码执行的同一队列中。
这反过来意味着,ECMAscript中的无限循环会自动挂起整个浏览器的交互。
,以避免这一点的唯一方法是写清楚,干净的代码。如果它发生,大多数浏览器都意识到UI线程忙得太久,并询问用户是否要取消正在运行的JavaScript进程。如果你不想等,那么唯一的选择是杀死整个浏览器/标签进程。
但是,如果你知道你的脚本的某些部分确实可能导致无限循环,你可以手动在某种developer tools
设置breakpoints
或者你可以直接将debugger;
关键字为你的脚本。这会导致JavaScript解释器在当前行中停止,并且您有机会分析下一个代码(例如条件),并在它看起来很糟糕时取消执行。
我无法做任何事情,试试'while(1){}'循环,并尝试获得一个干净的退出(关闭标签,关闭窗口等) – skrat 2012-03-13 16:27:34
- 1. 你如何在Web浏览器上WP7
- 2. 在JS禁用浏览器
- 3. 如何判断在浏览器中还是在NodeJS中运行?
- 4. 如何在浏览器中
- 5. 迷你javascript浏览器
- 6. jQuery的/ JS防止在浏览器中
- 7. 在JS中同步浏览器事件
- 8. 在浏览器中运行webtorrent js
- 9. JS广播播放器在浏览网站时不断重置
- 10. 你如何在浏览器中运行Jasmine测试?
- 11. 你如何在浏览器中运行摩卡测试?
- 12. 你如何在谷歌浏览器中打开html?
- 13. 如何禁用浏览器浏览器?
- 14. 迷你图片浏览器(如myfonts.com上)
- 15. 如何在浏览器中使用网页浏览器控件?
- 16. 如何在浏览器中读取Connect Js cookie?
- 17. 如何查找JS代码在浏览器中工作?
- 18. 如何在浏览器中使用podio-js(没有Node.js)?
- 19. 如何在浏览器中本地执行.js文件?
- 20. JS浏览器检测IE
- 21. 外部JS和浏览器
- 22. 非浏览器JS库
- 23. 浏览器在PC上返回在JS
- 24. 如何将JS文件提供给每个浏览器,但IE浏览器
- 25. 我如何在浏览器
- 26. 你如何知道Node.js代码将在浏览器上运行?
- 27. 如何防止浏览器窗口中的设计被切断?
- 28. 你如何在你的网站上处理非常古老的浏览器?
- 29. 如何在Safari浏览器(Web浏览器)运行小程序
- 30. 如何在PHP中打开浏览器?
ctrl + alt + del – user544262772 2012-03-11 22:22:39
我不得不承认,这对于浏览器开发者来说更像是“动力”,以解决这种情况。 – skrat 2012-03-13 16:24:55
坦率地说,现有的JS执行者是愚蠢的,他们不能做这么简单的事情。 – Pacerier 2017-06-18 22:25:56