我有一个JavaScript函数,其中包含一个迭代很多次的for循环.
调用此函数后,IE浏览器显示以下消息:
停止运行此脚本?
此页面上的脚本导致Web浏览器运行缓慢.如果它继续运行,您的计算机可能会无响应.
我怎样才能解决这个问题?
无论如何我可以从IE禁用此消息?
我有一个预订引擎,在IE7中相当缓慢.它基于ajaxified和hash/window onchange.共有5个步骤.我遇到的主要问题是第2步在IE中非常慢.
当用户登陆步骤2时,发出ajax请求以使用web服务提取数据以显示酒店房间.酒店客房按主要房型和内部更具体类型划分.应用于酒店房间的JS功能包括:
所有这一切导致着名:
显然原因是在IE中的特定时间内有太多的脚本语句按顺序执行.
我基本上需要重构我的代码并对其进行优化,以便在函数调用之间存在延迟.
我在执行ajax请求后注入HTML的方式是:
734 $( o.html ).appendTo( el )
Run Code Online (Sandbox Code Playgroud)
o.html
是对html
从此处派生的JSON对象属性的引用.
然后,下面的代码运行:
setTimeout(function () {
$('#roomz .room-accordion').each(function () {
$(this).accordion({
header: 'h2.new-heading',
autoheight: false,
clearStyle: true,
collapsible: true,
change: function (event, ui) {
window.ui = ui;
// if it hasnt been quickflipped/subnest accordioned, do it
if (!$(ui.newContent).data('enabled')) {
$('.room-rates', ui.newContent).each(function () {
$(this).accordion({
header: 'h4.rate-name',
autoheight: false,
active: 0,
clearStyle: …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个广泛使用JavaScript(jQuery)的网站.我经常让IE'停止运行这个脚本?' 我尝试关闭浏览器时出现错误对话框.
我猜这个问题发生的原因是该网站是一个使用AJAX的网页,所以没有回发来重置IE执行的命令数.
客户端注册表黑客攻击不是一种选择.
有没有人知道解决这个错误的方法?
更新:页面有一个(~10)个间隔计时器,它们以30或60秒的间隔连续轮询.
我有一个用java gwt编写的Web应用程序.在IE8中打开网站时,总会弹出"此页面上的脚本导致您的网络浏览器运行缓慢"的消息.该消息仅出现在IE8中没有更高版本,而不是在FF或Chrome中!
由于应用程序是用java gwt编写的,因此很难调试javascript代码,还有另一种可能性来确定问题吗?
应用程序还有许多异步调用数据库可能是问题吗?
我创建了一个Drupal网站,它使用Openlayers来显示地图.在其中一个地图中,有一些"过滤器",用户可以使用它们来动态更改地图中显示的数据.与各国相关的数据显示为各国的泡沫.使用Openlayers的API绘制气泡.选择过滤器时,会在场景后面进行大量计算.我使用了setTimeout来避免长时间运行的循环.过滤器工作正常.但是,在单击多个过滤器后(例如,如果单击12个过滤器),如果用户通过单击链接尝试移动到另一个页面,则在IE7和IE8中,以下错误显示 -
"停止运行这个脚本?
此页面上的脚本导致Web浏览器运行缓慢.如果它继续运行,您的计算机可能会无响应."
此错误不会在任何其他浏览器中显示,并且在单击链接之前不会显示在IE7中.这方面的任何指针都将受到高度赞赏.
更新:问题出在OpenLayers的事件缓存中.OpenLayers在窗口卸载事件中清除了事件缓存,这在IE7和IE8中陷入困境(我不知道为什么).到目前为止,当用户点击另一个链接时,我已经能够通过点击普通链接调用OpenLayers.Event.unloadCache()来解决问题.
javascript ×4
jquery ×2
ajax ×1
dom ×1
gwt ×1
java ×1
openlayers ×1
optimization ×1
refactoring ×1