我创建了一个使用 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 而不是类,并为选择器、选择器缓存等提供上下文。
此列表是根据我自己的建议中的“有用性”标准排序的。
关于javascript - 尝试导航到另一个页面时 IE7 和 IE8 中出现 "Stop running this script"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6505512/