【问题标题】:"Stop running this script" error in IE7 and IE8 while trying to navigate to another page尝试导航到另一个页面时,IE7 和 IE8 中出现“停止运行此脚本”错误
【发布时间】: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


【解决方案1】:

jQuery 可能非常耗费资源。下面链接的文章为您提供了 10 个很好的建议,以更好地执行您的 jQuery 应用程序。对我来说最有用的(一个月前我遇到了同样的问题)是用传统的 for lops 替换 $.each() 并用 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

【讨论】:

  • 谢谢。我确实有一些 $.each()。将尝试替换它们并让您知道我得到了什么。
【解决方案2】:

您需要优化您的客户端脚本。请参考答案here.

【讨论】:

  • 感谢您的快速回复。我已经检查过那个讨论。另外,我检查了 Remy Sharp 推荐的工具;但不能从中得到太多。对我来说主要问题是我找不到导致问题的代码,因为在单击链接之前不会显示消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-03
  • 2019-05-10
  • 2021-09-17
  • 1970-01-01
  • 2017-06-03
  • 2022-10-08
  • 1970-01-01
相关资源
最近更新 更多