首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ie8 javascript停止脚本我可以使用settimeout来中断执行并避免错误

ie8 javascript停止脚本我可以使用settimeout来中断执行并避免错误
EN

Stack Overflow用户
提问于 2012-03-23 21:36:51
回答 1查看 926关注 0票数 1

我有一个固有的复杂的页面设计的idot运行的脚本加载,这需要太多的时间和生成停止脚本对话框。

除了IE6/7/8之外,该页面在所有经过测试的浏览器上都可以正常工作。

我想知道是否可以使用settimeout分解脚本以避免此错误。

类似于:$('.level').each(f(){settimeout(f(){script},1)});

更新:是的,我当然知道每个人都想看代码,但它也很大。也许这一行将表明在onload的顶层发生了什么:

代码语言:javascript
运行
复制
    $('#thetable').find('tr.listing :checkbox').click(function(event) { ... });

其中在#thetable中有大约5700个dom节点,这是比较普通的搜索结果集之一。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-23 22:43:23

我认为在这个选择器上搜索$('#thetable').find('tr.listing :checkbox')是在IE中花费时间的原因。

有几件事你可以做。

听起来像是在表中显示结果集。在这种情况下,您可能希望实现分页,并让脚本返回到服务器以获取有关页面更改事件的更多结果。这将意味着要处理的DOM节点更少,并且应该处理停止脚本问题。

你可以尝试的另一种方法是给你的复选框提供可预测的ID,然后做一个直接的选择,比如$("#thetable_checkbox_“+ checkboxid),然后让一个forloop迭代结果,改变你选择的checkboxid。

下面是一些伪代码作为示例

代码语言:javascript
运行
复制
for (int x = 0; x < numResults; x++) {
    setTimeout(function() {
        $("#thetable_checkbox_" + x).bind(function() {
             clickEventFunction()
        });
     }, 0);
 }

您的复选框ID已生成ID,如thetable_checkbox_1等。

您提到的用setTimeout分解脚本的方法也可以使用,但您需要避免使用jQuery选择器,这可能需要很长时间。您还可以将超时值设置为0,因为您希望它在浏览器准备就绪后立即运行。将超时设置为0YEILD到浏览器,并允许它在返回到脚本之前运行任何挂起的操作。如果脚本长时间运行,您应该显示一个模式加载对话框,以便页面仅在准备就绪时显示给用户。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9840152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档