如何测试潜在的“浏览器崩溃”JavaScript?

时间:2010-06-10 22:59:33

标签: javascript browser loops infinite-loop

我一直在使用JavaScript解决http://projecteuler.net/上的一些问题。我一直在使用一个简单的html页面并在脚本标签中运行我的代码,因此我可以在浏览器的控制台中记录我的结果。在尝试循环时,我有时会导致浏览器崩溃。

我有更好的环境来进行这种开发吗?

6 个答案:

答案 0 :(得分:5)

  1. 对每个标签具有单独进程的浏览器
  2. 调试器断点
  3. 如果在达到某个时间阈值时打破了循环

答案 1 :(得分:1)

如果您在浏览器中运行计算量很大的程序,则可能需要查看使用web workers。简而言之,它们允许您在不会锁定浏览器的不同线程中运行代码。

答案 2 :(得分:1)

如果您只是对运行javascript程序感兴趣,为什么不使用像node.js甚至Rhino这样的东西?这样,如果遇到“麻烦”,您可以轻松记录输出而不会丢失输出。

答案 3 :(得分:1)

我可以想到两种现成的可能性:

1)使用具有断点的调试器。 Firebug相当不错。 Safari和Chrome也有一些内置的调试工具。

2)您可以使用Mozilla Rhino和Env-js将测试移出浏览器(请参阅http://groups.google.com/group/envjshttp://github.com/thatcher/env-js

答案 4 :(得分:1)

如果脚本运行超过5-10秒(Source),所有现代浏览器(Opera除外)都应该中断脚本。

在Firefox中你甚至可以lower this threshold,如果1​​0秒意味着太大的惩罚。另请注意,即使从Firebug控制台运行代码,此机制也会启动:

Stop Script on Firefox http://img819.imageshack.us/img819/9655/infloopsp.jpg

我认为这个功能本身应该为这些循环实验提供一个非常安全的环境:)

答案 5 :(得分:0)

除了修复导致浏览器崩溃的错误之外,您无法阻止浏览器崩溃。

您至少可以通过使用Chrome等浏览器来缓解崩溃的影响,这些浏览器通常会将一个标签中的崩溃与其他标签分开(因此您只会丢失自己的页面),或者只是安装专门用于测试的单独浏览器。 / p>

在跟踪可能已经记录到日志的数据方面,您可能会使用像Firebug这样的插件,它具有内置调试器,因此您可以暂停脚本执行并检查变量,可能是在任何崩溃之前发生。