我有一个用 java gwt 编写的 Web 应用程序。在 IE8 中打开网站时,总是会弹出消息“此页面上的脚本导致您的 Web 浏览器运行缓慢” 该消息仅出现在 IE8 中,没有更高版本,在 FF 或 Chrome 中不出现!
由于应用程序是用 java gwt 编写的,因此很难调试 javascript 代码,是否还有另一种可能来确定问题?
该应用程序还有许多异步调用数据库可能是问题吗?
此消息意味着 JavaScript 会长时间阻塞浏览器线程。
它在 IE8 中的实现真的很傻。它计算它执行的 JavaScript 代码行数(指令),如果达到某个阈值,则会显示此消息。
实际上这个限制是在 Windows 注册表中配置的,默认为 5000000 或类似的值。它可以增加,这当然不是推荐的解决方案。
避免此消息的方法之一是使用 GWT DeferredCommand。如果您可以将正在完成的工作拆分为足够小的块而不会触发 IE8 保护约束,那么您会没事的。还尝试将多个异步请求合并为尽可能少的数量并改进渲染逻辑,可能会从 Widget 转移到 UI Binder 或普通 DOM。
这是相关问题(禁用 Internet Explorer 中的长时间运行脚本消息)
我稍微不同意- “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 有 profiling ,但是非常缓慢和麻烦。
5) 分析时使用 GWT Pretty 模式而不是 OBF 模式。
一旦您确定代码的哪一部分导致了缓慢的脚本警告,只需 FIX it即可。
由于某些脚本可能需要很长时间才能运行,因此 Internet Explorer 会提示用户决定是否要继续运行慢速脚本。
如果生成的 Cache.js Javascript 文件有些大,则该消息可能会出现。
因此 Internet Explorer 4.0、5.0、6、7 和 8 版的消息框带有一条消息
在 MS 博客上阅读这篇文章
并参考以下问题