jquery.height()在追加到DOM后挂起在IE中

时间:2014-05-30 18:54:09

标签: jquery internet-explorer

我有一个动态从服务器获取文本内容的页面,使用jquery将其附加到dom中,然后进行一些进一步处理(jquery'tiight()'等),以便我们可以滚动/调整大小/ etc在这种情况下,我正在取回的文本有大量的空白 - 它来自已转换为文本的电子表格,第一行是标题行,长度为66393个字符(在一行!)。包含此文本的文件总大小小于1Meg,因此在文本编辑器中很容易查看,尽管水平滚动条很小!

对于这种情况,IE8,IE9,IE10和IE11冻结(旋转图标停止旋转,窗口变白),如下所示:

var chunks = $('#textChunks');
var h1 = chunks.height();
console.log("h1 = " + h1);
chunks.append(newContent);
console.log("content appended");
var h2 = chunks.height();//IE Hangs on this line!
console.log("h2 = " + h2);

//note that I can use javascript append like:
//element.insertAdjacentHTML("beforeend", newContent);
//and IE still dies on the same line

我添加了console.log语句用于说明,这些语句通常不在代码中。如果我注释掉append()调用,IE很乐意继续处理,所以它是附加到DOM的组合,然后再为我采取另一个冻结IE 的jquery.height()内容!

页面工作正常,否则它已经生产了一年多,在所有主流浏览器中都经过测试,我只是将jquery库升级到1.9.2来测试这个问题(这没有解决问题)。

'newContent'变量包含一个用span标签包裹的纯文本字符串,如下所示:< span id ='foo1'> plain text here< / span>

如果这不与某人敲响钟声,我会尝试发布一些消毒内容或其他内容。提前谢谢。

1 个答案:

答案 0 :(得分:0)

对我来说,响铃的是IE通过jQuery在某些类型的内容创建上崛起。所以chunks.append(newContent);可能会导致newContent中某些类型的HTML出现问题,如果我没记错的话,问题与jQuery如何在插入新内容之前为其创建临时片段有关与IE相关的一些错误。

您可以通过更改附加newContent的方式来解决这个问题(我必须做一些研究才能找到这些细节)。事实证明,IE中.append()存在几个不同的问题,哪种解决办法适当取决于您要追加的内容。如果您可以创建一个说明实际内容问题的jsFiddle,我们可以提供解决方法。