问题在于标题 - IE是行为不端,并且说有一个脚本运行缓慢 - FF和Chrome没有这个问题。
我怎样才能找到问题所在。那页上有很多JS。手工检查不是一个好的想法
编辑:这是我正在处理的项目中的一个页面...但我需要一个工具来查找问题。
结束:原来是UpdatePanel - 它会以某种方式“混淆”并且需要很长时间来处理某些事情。我只是把它扔出窗外 - 从现在开始只使用JQuery:D。
我正在选择Remy Sharp的回答,因为我真的不知道这个工具,看起来很酷。
答案 0 :(得分:52)
不同浏览器会以不同方式检测长时间运行的脚本:
Nicholas Zakas has written an excellent article covering this topic.
因此 - 避免这些问题的最佳方法是减少循环,递归和DOM操作。
答案 1 :(得分:18)
获取IBM Page Profiler的副本:
它是免费的(总是一场胜利)。在后台启动它,给它几秒钟,然后在IE中刷新页面。返回探查器,它将列出页面上使用的所有资源,并为您提供详细的配置文件信息 - 特别是JavaScript需要很长时间才能执行的地方。
找到问题的根源应该是一个良好的开端。
如果脚本标记是内联的,我建议创建该文件的本地副本,并在可能的情况下将脚本标记分离为单独的文件。
答案 2 :(得分:9)
删除一半代码并查看是否仍然发生。如果不是,那就是你移除的一半。重复,直到找出导致问题的代码块为止。
答案 3 :(得分:3)
通常是一个无限循环导致这种情况。检查你的循环及其退出条件。
答案 4 :(得分:1)
对于IE,该对话框基于已处理的JS命令。请看这里的信息和&更改默认值的方法:http://support.microsoft.com/kb/175500
答案 5 :(得分:1)
您还可以检查您的网页中是否包含Google Analytics javascript。该错误仅发生在IE上,一旦谷歌代码被删除,它就有效了!
答案 6 :(得分:1)
确保以下JavaScript代码只运行一次:
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(win_onload);
上面的代码在函数win_onload()
内。
答案 7 :(得分:1)
我发现添加警报('在X之前')警报('在X之后')有助于我找到我的问题。我将它们添加到我的$(function(){
}
答案 8 :(得分:0)
我不相信有一个工具可以找到有问题的脚本。您可能会尝试附加一个IE调试器,如Visual Studio,也许它会在问题发生时中断。但我无法保证这项工作。
在过去,当我遇到类似的问题时,我只是简单地评论了代码段,以测试问题的缩小范围,通常采用二进制搜索类型模式。评论一半的JavaScript库等......
除了其他人所说的,这种类型的问题发生在大循环和许多setTimeout函数调用或setTimeout递归循环中。
答案 9 :(得分:0)
如果javascript绑定页面处理超过10秒,您会收到此消息。 IE显然有一个较慢的javascript引擎,导致这种情况。
我猜测一些代码优化肯定会有所帮助,并尝试减少页面加载时执行的javascript数量。如果必须的话,也许可以使用setTimeout()来处理一些不必要的事情。
就工具而言,使用Firebug的分析器来查看你花费这么多时间的地方。
答案 10 :(得分:0)
如果您可以控制JavaScript,可以将其分解为单独的脚本或尝试使用Lazy Load方法。
只是我的$ .02
答案 11 :(得分:0)
在我的情况下,在GridView中绑定了很多行的ASP.NET HoverMenuExtender控件太多导致性能极慢。我删除了HoverMenuExtender,我的速度问题(以及对话框)消失了。与弹出对话框的原因并不完全相关,但它可能对某人有所帮助。
答案 12 :(得分:0)
@ nikmd23回答是有用的..
我的2美分......我遇到了脚本警告问题 - 由于在dropdown list
循环的帮助下加载for
个项目。
我在Disabling the long-running-script message in Internet Explorer中提到了@Eric Leschinski的帖子。
请参阅setTimeout for loading items in a dropdown list,了解我是如何解决此问题的
答案 13 :(得分:0)
这种警报几乎没有理由
没有。 IE执行的JS指令超出了预定义的限制。这可以通过编辑Windows注册表来修复,请参阅Here
优化javascript代码,以减少执行时间。