【发布时间】:2011-06-28 11:12:25
【问题描述】:
我创建了一个使用 Openlayers 来显示地图的 Drupal 网站。在其中一张地图中,有一些“过滤器”,用户可以使用它们来动态更改地图中显示的数据。与国家相关的数据显示为国家上方的气泡。气泡是使用 Openlayers 的 API 绘制的。选择过滤器时,大量的计算在幕后进行。我使用 setTimeout 来避免长时间运行的循环。过滤器工作正常。但是,在点击了多个过滤器之后(例如,如果点击了 12 个过滤器),如果用户尝试通过点击链接移动到另一个页面,则在 IE7 和 IE8 中会显示以下错误 -
“停止运行此脚本?
此页面上的脚本导致您的网络浏览器运行缓慢。 如果它继续运行,您的计算机可能会变得无响应。”
此错误不会在任何其他浏览器中显示,也不会在 IE7、8 中显示,直到单击链接。任何这方面的指针都将受到高度赞赏。
更新:问题出在 OpenLayers 的事件缓存中。 OpenLayers 清除窗口卸载事件中的事件缓存,这被卡在 IE7 和 IE8 中(我不知道为什么)。到目前为止,我已经能够解决用户单击另一个链接时的问题,方法是在单击正常链接时调用 OpenLayers.Event.unloadCache()。
【问题讨论】:
-
如果你把一个链接到页面,我们可以看看代码。
标签: javascript jquery internet-explorer openlayers