56

当您在 Chrome 中的 jsfiddle 中获得无限循环时,您唯一的选择(据我所知)是关闭选项卡。当然,这意味着您将丢失当前窗口中的所有工作!有没有一种简单的方法来停止无限执行的脚本?

  1. 我打开了开发人员工具,因为我正在做一些调试。
  2. 我可以暂停脚本并逐步完成循环。
  3. 我找不到任何地方可以停止脚本。
  4. 我无法修改脚本或变量来停止无限循环(因为脚本执行发生在单独域的 iframe 中,因此不允许使用 JavaScript 修改 iframe 中的数据并在控制台中生成异常)。

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

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

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

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

有任何想法吗??我仍然打开标签,我希望在不关闭标签的情况下将其取回:-)

4

8 回答 8

100

如何在没有开发者模式的情况下做到这一点:

  • 打开一个新标签
  • 使用 Shift-Escape 打开任务管理器
  • 杀死任务
  • 对被杀死的选项卡使用后退按钮(JSFiddle 不会运行脚本)
  • 修复错误
  • 更新

或者在 MacOS 上,

  • 打开活动监视器
  • 杀死第一个“Google Chrome Helper (Renderer)”进程。可能是 JSFiddle
  • 修复问题
  • 运行代码
于 2013-03-11T23:59:32.220 回答
7

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

于 2011-09-30T21:22:02.030 回答
3

打破无限循环的一种方法是抛出一个未处理的异常,这将停止当前调用堆栈的执行。为此:

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

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

于 2013-05-12T11:02:18.893 回答
1

运行进程资源管理器并终止使用大量 CPU 的 chrome 进程...它将“崩溃”页面并让您重新加载...

于 2012-04-10T16:17:45.543 回答
1

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

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

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

  • 查看源:jsfiddle.net/user_name/fiddle_hash/revision/light/
  • 查看源:jsfiddle.net/user_name/fiddle_hash/revision/show/
于 2016-06-27T14:37:38.993 回答
0

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

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

于 2012-01-07T17:40:31.300 回答
0

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

最后,这对我有用;也许它也会帮助你...

  • 当页面无响应时,转到Chrome > Preferences > Privacy并禁用 JavaScript。
  • 等待页面死掉(对我来说大约 4 或 5 分钟);悲伤的脸图标出现在该选项卡中。
  • 点击后退按钮。它应该看起来像 JSFiddle 正在加载,但它不会因为有趣的是 JSFiddle 需要 JavaScript 来呈现页面。
  • View > Developer > View source
  • 我的剧本,只是略有损坏,像div被召唤一样无辜地坐在那里'panel_js'
  • 突出显示,复制,再次呼吸,吸取教训。
于 2014-12-22T02:01:30.463 回答
0

我的文件陷入了一个循环,并且也会冻结 JSFiddle 上的仪表板。

  • 我可以清除的唯一方法是在首选项选项卡中禁用 JavaScript,而我在不同的 Chrome 选项卡中打开了一个新的小提琴页面。
  • 然后导航到所有小提琴。
  • 删除 Fiddle,然后它会给出 404 错误。
  • 打开 JavaScript 并重新加载仪表板。
  • 之后能够继续制作和编辑小提琴。
于 2018-11-27T02:50:30.583 回答