假设我不小心写了这个:
 do { } while (true);
......然后跑了.除了杀死你的浏览器,有没有办法停止javascript执行(相当于基本的Ctrl + Break,或Ctrl + C)?
通常,大约30秒后,您的浏览器会询问您是否要停止长时间运行的脚本,但这并不总是会发生(正如我刚刚发现的那样)!
仅供参考:这样的简单循环:for (i=1; i > 0; ++i);会导致我的浏览器崩溃(Firefox 3.5b4).我感觉不太像测试它是否是我的任何附加组件.连续重启我的浏览器不是我周一晚上的一个有趣的想法.
小智 49
我正在使用Chome版本45.0.2454.101
在右上角的汉堡菜单中,单击更多工具>任务管理器,然后从那里删除选项卡.这是因为尝试关闭选项卡失败.否则,选项卡上的简单"X"会将其杀死.
Sph*_*xxx 34
2018年更新:
在Chrome 67中,如果你有DevTools open(F12),你可以在不杀死整个标签的情况下结束无限循环:
https://developers.google.com/web/updates/2018/04/devtools#stop
Rah*_*Ali 10
如果您使用的是 Chrome,您可以轻松杀死无响应标签。
当您看到 JavaScript 无限循环发生时,请执行以下步骤:
1.如果您已经打开了另一个标签,请继续该标签或打开一个新标签
2.按“Shift + Esc”打开Chrome的任务管理器
3.在列表中找到您的选项卡(应该是列表中内存消耗最大的),然后单击“结束进程”按钮。
导航到另一个选项卡很重要,因为 JavaScript 会捕获您的按键操作,并且由于其无限循环而不会对此执行任何操作。
小智 9
参考:https://superuser.com/questions/92617/stop-never-ending-popup-alerts-in-firefox
 
Firefox特别有问题......
警告!警告!不要跑这个!
javascript:
    while (true) alert("irritated and exhausted - yet?");
这将是"无限"并且不会耗尽内部超时,因为脚本不会足够快地咀嚼CPU时间.在FF 11中,这保证了没有"无反应的脚本"堕胎机会.
在早期的浏览器版本中,使用手动干预可以优雅地停止使用有问题的脚本,而不会出现错误并中止整个浏览器.没有这样的控制是一个主要的浏览器软件设计缺陷.需要不合理的灵活性和反射来影响参考文献中描述的"解决方案"的手动电机机械.
警告:脚本可以"无限"而不是超时而没有警报类型提示.这些特别有害和令人讨厌.基本上,脚本运行得足够慢,以便CPU时间周期分配为20秒.通过在事件触发器上暂停执行等待恢复,延长几分钟或几小时或......,在超时之前.而不是计算CPU周期,脚本在现实世界时钟上超时会好得多.(你注意到你怎么不中止正在试图获取内容的脚本-但不成功-构建一个页面在FF这两个地址栏按钮reload和cancel/stop禁用虽然标签至少可以关闭.)普通的JavaScript Timeout()和setInterval()呼叫不受到这种影响并受到限制,以便在暂停时,人工干预可以"优雅地"中止它们.
经验观察的测试环境:
window.navigator.userAgent=
Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:11.0) Gecko/20100101 Firefox/11.0
PS.剧本
for (i=1; i > 0; ++i);
当i超过允许的最大值时,最终将捕获溢出错误.
| 归档时间: | 
 | 
| 查看次数: | 62658 次 | 
| 最近记录: |