我有一个用java gwt编写的Web应用程序。在IE8中打开网站时,总会弹出“此页面上的脚本导致您的网络浏览器运行缓慢”的消息 该消息仅出现在IE8中没有更高版本,而不是FF或Chrome!
由于应用程序是用java gwt编写的,因此调试javascript代码非常困难,是否还有另一种可能性来确定问题?
应用程序还有许多异步调用,数据库可能是问题吗?
答案 0 :(得分:9)
此消息表示JavaScript会阻止浏览器线程很长时间。
它在IE8中的实现真的很傻。它计算它执行的JavaScript行代码(指令)的数量,如果达到某个阈值,则会显示此消息。
实际上这个限制是在Windows注册表中配置的,默认情况下是5000000或类似的。它可以增加,当然不是推荐的解决方案。
避免此消息的一种方法是使用GWT DeferredCommand。如果你可以将正在完成的工作拆分成足够小的块而不是触发IE8防护约束,你就可以了。还尝试将多个异步请求合并到尽可能少的位置并改进渲染逻辑,可能会从Widgets转移到UI Binder或plain DOM。
这是相关问题(Disabling the long-running-script message in Internet Explorer)
答案 1 :(得分:1)
我会稍微不同意 - “java gwt很难调试javascript代码”
当您进行繁重的for循环或深度递归调用时,会发生慢速脚本警告。这可能发生在两种情况下 -
1) Poorly coded client side processing logic - example tree navigation
2) Deep object graph in rpc.
如果您熟悉
,您可以快速找出问题点1)使用Speed Tracer - https://developers.google.com/web-toolkit/speedtracer/
2)使用GWT记录 - https://developers.google.com/web-toolkit/doc/latest/DevGuideLogging
3)使用Chrome开发工具& Firebug捕捉时间线,剖析等
4)IE8有分析,但它很慢而且很麻烦。
5)在分析时使用GWT Pretty模式而不是OBF模式。
一旦您确定代码的哪一部分导致慢速脚本警告只是修复它。
答案 2 :(得分:0)
由于某些脚本可能需要花费大量时间才能运行,因此Internet Explorer会提示用户决定是否继续运行慢速脚本。
如果生成的Cache.js Javascript文件是大尺寸的消息可能会出现的那些。
因此,Internet Explorer版本4.0,5.0,6,7和8的消息框带有消息
阅读MS博客上的this文章
参考以下问题