当您在Chrome中的jsfiddle中获得无限循环时,您唯一的选择(我知道)是关闭标签。当然,这意味着您在当前窗口中丢失了所有工作!是否有一种简单的方法来阻止无限执行的脚本?
一切都开始了,因为我决定从我的循环中交换方向
for (var c = 0; c <= 11; c++)
到
for (var c = 12; c > 0; c++)
但正如您在上面所见,我忘记将其从c++
更改为c--
。
任何想法?我仍然打开标签,我希望在没有关闭标签的情况下取回标签: - )
答案 0 :(得分:97)
如果没有开发者模式,该怎么做:
答案 1 :(得分:7)
使用开发者模式,进入资源并找到您的脚本并将其复制并粘贴到文本文档或新窗口中。如果您在资源中找不到它,请搜索您使用的变量或代码行。
答案 2 :(得分:3)
打破无限循环的一种方法是抛出未处理的异常,这将停止当前调用堆栈的执行。 为此:
foo.bar(args)
foo.bar=function(){throw 42;}
为我工作。我没有尝试过,但我相信通过重载getter或setter你可以使用上面描述的技巧进行分配和读取,而不仅仅是函数调用。此外,通过将变量设置为undefined,如果在循环中使用此变量的字段,则可能会导致致命错误(从而中断循环)。例如,delete foo.tab
会中断foo.tab[42]
或foo.tab.bar
。出于某种原因,简单地在控制台中写foo=undefined
将不会(也许它定义了一个名为foo的控制台窗口的本地变量)。
答案 3 :(得分:1)
运行Process Explorer并终止使用大量CPU的chrome进程......它会“崩溃”页面并让你重新加载......
答案 4 :(得分:1)
循环选项卡处于活动状态时,无法启动Chrome的任务管理器。我不得不选择另一个标签。然后我按下Shift-Escape启动任务管理器,终止JSFiddle进程,重新选择选项卡,然后点击后退按钮显示页面而不运行脚本。
JSFiddle使用iframe加载“result”面板。截至2016年6月,框架的URL是小提琴网址加“/ show /”。我检查了iframe的源代码,发现它加载了另一个带有“/ light /”的URL。其中一个网址应包含您的源代码。
如果您的浏览器支持view-source URI scheme,您可以按如下方式访问您的小提琴源代码:
答案 5 :(得分:0)
这里出现了同样的问题,我在脚本暂停状态下打开了javascript控制台。 (使用开发人员工具暂停了它)
然后我更改了变量值,以便while循环结束。
答案 6 :(得分:0)
如果其他人在阅读完其他答案后陷入困境,那么这对我有用(Chrome,Mac)。对我来说,JSFiddle选项卡被“卡住”,但Chrome的其余部分响应。我在“资源”窗格中打开了JavaScript控制台,但它也没有响应。在这种状态下重新加载页面没有用,因为在我得到任何东西之前,JSFiddle会给我脚本。
最后这对我有用;也许它对你有帮助......
Chrome > Preferences > Privacy
并停用JavaScript。View > Developer > View source
div
'panel_js'
{{1}}一样无辜地坐在那里。答案 7 :(得分:0)
我的文件陷入了循环,并且也会冻结JSFiddle上的仪表板。