在jsfiddle中取消无限循环执行

当你在Chrome中的jsfiddle中无限循环时,你唯一的select就是closures这个选项卡。 当然,这意味着你在当前窗口中失去了所有的工作! 有没有简单的方法来阻止无限执行的脚本?

  1. 我有开发工具打开,因为我正在做一些debugging。
  2. 我可以暂停脚本,并通过循环。
  3. 我找不到任何地方停止脚本。
  4. 我无法修改脚本或variables来停止无限循环(因为脚本执行发生在独立域上的iframe中,因此不允许使用JavaScript修改iframe中的数据,并在控制台中生成一个Exception)。

这一切都开始,因为我决定从我的循环交换方向

for (var c = 0; c <= 11; c++) 

 for (var c = 12; c > 0; c++) 

但正如你所看到的,我忘了把它从c++改为c--

有任何想法吗?? 我仍然有选项卡打开,我希望得到它没有closures标签:-)

使用开发人员模式,进入资源并find您的脚本,并将其复制并粘贴到文本文档或新窗口中。 如果在资源中找不到它,请search您使用的variables或一行代码。

如何在没有开发者模式

  • 打开一个新标签
  • 使用Shift-Escape打开任务pipe理器
  • 杀死任务
  • 使用后退button来杀死选项卡 (JSFiddle将不会运行该脚本)
  • 修复错误
  • 更新

打破无限循环的一种方法是抛出未处理的exception,这将停止当前调用堆栈的执行。 要做到这一点:

  1. 暂停debbuger
  2. 在循环中find一个有希望的语句,例如一个函数调用: foo.bar(args)
  3. 在控制台中,覆盖函数抛出: foo.bar=function(){throw 42;}
  4. 取消暂停debugging器

为我工作。 我还没有尝试,但我相信通过重载getter或setter你可以使用上面描述的技巧也分配和读取,不仅为函数调用。 另外,通过将variables设置为undefined,如果在循环中使用此variables的字段,则可能会导致致命错误(并因此中断循环)。 例如, delete foo.tab将打破foo.tab[42]foo.tab.bar 。 出于某种原因,简单地在控制台中写入foo=undefined不会(可能会定义一个名为foo的控制台窗口的本地variables)。

运行进程资源pipe理器,并杀死使用大量CPU的铬进程…它将“崩溃”的页面,让你重新加载…

当循环标签处于活动状态时,我无法启动Chrome的任务pipe理器。 我不得不select另一个选项卡。 然后我按Shift-Escape启动任务pipe理器,杀死JSFiddle进程,重新select选项卡,然后点击返回button显示页面而不运行脚本。

JSFiddle使用iframe加载“结果”面板。 截至2016年6月,该框架的URL是Fiddle URL加“/ show /”。 我检查了iframe的源代码,发现它用“/ light /”加载另一个URL。 其中一个url应该包含您的源代码。

如果您的浏览器支持view-source URIscheme ,您可以按如下方式访问小提琴的源代码:

  • 视图源:jsfiddle.net/user_name/fiddle_hash/revision/light/
  • 视图源:jsfiddle.net/user_name/fiddle_hash/revision/show/

同样的问题出现在这里,我打开了脚本暂停状态的JavaScript控制台。 (使用开发工具暂停)

然后我改变了variables的值,以便while循环结束。

如果其他人在阅读其他答案后卡住,这是我的工作(Chrome,Mac)。 对我来说,JSFiddle选项卡被卡住了,但Chrome的其他部分却响应。 我在资源窗格上打开了JavaScript控制台,但是它也没有响应。 在这个状态下重新加载页面并没有帮助,因为JSFiddle会在我得到任何东西之前给我脚本。

最后这为我工作; 也许它也会帮助你…

  • 页面无响应时,请转到Chrome > Preferences > Privacy然后停用JavaScript。
  • 等待页面消失(大约4或5分钟); 在那个标签中出现了悲伤的脸部图标。
  • 点击后退button。 它应该看起来像JSFiddle加载,但它不会因为足够有趣的JSFiddle只需要JavaScript来呈现页面。
  • View > Developer > View source
  • 我的脚本,只是稍微有些破损,就像一个名为'panel_js'div一样坐在那里。
  • 突出显示,复制,再次呼吸,吸取教训。