javascript - 尝试导航到另一个页面时 IE7 和 IE8 中出现 "Stop running this script"错误

标签 javascript jquery internet-explorer openlayers

我创建了一个使用 Openlayers 来显示 map 的 Drupal 网站。在这些 map 之一中,有一些“过滤器”,用户可以使用它们来动态更改 map 中显示的数据。与国家相关的数据显示为国家上方的气泡。气泡是使用 Openlayers 的 API 绘制的。选择过滤器时,大量计算会在幕后进行。我使用 setTimeout 来避免长时间运行的循环。过滤器工作正常。但是,在单击多个过滤器后(例如,单击 12 个过滤器),如果用户尝试通过单击链接移动到另一个页面,则在 IE7 和 IE8 中会显示以下错误 -

“停止运行此脚本?

此页面上的脚本导致您的网络浏览器运行缓慢。 如果它继续运行,您的计算机可能会变得无响应。”

在单击链接之前,此错误不会显示在任何其他浏览器中,也不会显示在 IE7、8 中。任何有关这方面的指示都将受到高度赞赏。

更新:问题出在 OpenLayers 的事件缓存中。 OpenLayers 清除了窗口卸载事件中的事件缓存,这在 IE7 和 IE8 中卡住了(我不知道为什么)。到目前为止,我已经能够通过在单击普通链接时调用 OpenLayers.Event.unloadCache() 来解决用户单击另一个链接时的问题。

最佳答案

jQuery 的资源消耗可能非常大。下面链接的文章为您提供了 10 条好的建议,以帮助您更好地执行 jQuery 应用程序。对我来说最有用的(一个月前我遇到了同样的问题)是将 $.each() 替换为传统的 for lops,并用 jquery 模板替换大量的 DOM 构造。还使用 ID 而不是类,并为选择器、选择器缓存等提供上下文。

此列表是根据我自己的建议中的“有用性”标准排序的。

  1. 10 ways to instantly increase your jquery performance

  2. improve your jquery 25 excellent tips

  3. 10 advanced jquery performance tuning tips from paul irish

  4. 8 jquery performance tips

关于javascript - 尝试导航到另一个页面时 IE7 和 IE8 中出现 "Stop running this script"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6505512/

相关文章:

javascript - 如何运行 get json 并保存为变量,然后在其他方法中使用它

html - 在 IE11 中呈现时,仅在 ReportViewer 中完全向下滚动后才出现水平滚动条

CSS :hover in Sharepoint works in Chrome but not IE8( or 7 compat)

jquery - IE8及以下条件格式

javascript - 尝试在 JS 中运行此代码。

javascript - 我应该在 body 标签上使用 onload 还是检测 URL?

javascript - 如何为表单提交事件创建回调(没有ajax)

javascript - 如何在 html5 中加载部分 html?

jquery - 使用 jQuery 获取 "img"id

php - Jquery 重连接