相关疑难解决方法(0)

是否有IE渲染完成事件?

在尝试确定页面加载20秒的原因时,我在IE8中发现了一些奇怪的行为.

情景是这样的.

我做了一个ajax调用,它返回并且回调看起来像这样

$("#StoreDetailsContainer").html($(tableHtml));
var StoreDetailsTable = $("#StoreDetailsTable");
StoreDetailsTable.tablesorter({ sortList: [[0, 0]], cssChildRow: "SubTable" });
StoreDetailsTable.filtertable({ cssChildRow: "SubTable" });
Run Code Online (Sandbox Code Playgroud)

但是,这段代码需要20秒才能完成.

我正在乱搞,计时,并在方法之间弹出警报,突然间,只用了6秒钟.我玩了一下,发现如果我在.html()调用之后引入延迟,并且在我尝试操作DOM之前,页面渲染速度更快.它现在看起来像这样

$("#StoreDetailsContainer").html($(tableHtml));
window.setTimeout(function() {
    var StoreDetailsTable = $("#StoreDetailsTable");
    StoreDetailsTable.tablesorter({ sortList: [[0, 0]], cssChildRow: "SubTable" });
    StoreDetailsTable.filtertable({ cssChildRow: "SubTable" });
}, 100);
Run Code Online (Sandbox Code Playgroud)

尽管在该过程中添加了额外的1/10秒,它也只需要6秒.

我的理论是,因为.html()在尝试使用它之前,IE没有通过调用完全呈现给屏幕,所以会发生某种锁定.

有没有办法确定IE何时完成渲染添加到DOM的内容.html()所以我不需要在setTimeout调用中使用任意值?

javascript jquery dom internet-explorer-8

8
推荐指数
2
解决办法
5404
查看次数

标签 统计

dom ×1

internet-explorer-8 ×1

javascript ×1

jquery ×1