使用innerHTML想法添加大量html元素的最佳方法是什么
What is the best way to add big amount of html elements using innerHTML idea?
不是在Chrome上,而是在Firefox上,每次我发出ajax请求时,浏览器都会冻结。
这是交易...
ajax 请求接收一个巨大的 html,其中长度超过 75,000。
<div> ... <table> ... etc ... </table> ... </div>
所以我开始使用替换来获得更好的东西:
var html = data.replace(/'r?'n|'r/g, '').replace(/'s{2,}/g, ' ')
比我得到55,000还不够。
所以我一直在寻找,但直到现在我没有得到任何帮助。
这是我尝试过的:
1.
asyncInnerHTML(html, function(fragment){
$(tab).get(0).appendChild(fragment); // myTarget should be an element node.
});
阿拉伯数字。
var node = document.createTextNode(html);
$(tab).get(0).innerHTML = node;
3.
$(tab).get(0).innerHTML = html;
4.
$(tab).append(html);
5.
$(tab).html(html);
唯一快速的是第二个,javascript添加了nodeContent,当然这不是我想要的,因为我需要呈现的HTML而不是文本/字符串形式的html。
我希望有人能帮助我。
无论如何,谢谢。
下面是一段代码,用于解析表 HTML 中的行,然后一次添加一行,以便浏览器在解析 HTML 时有更多时间喘息。 此解析逻辑特定于您的 HTML,并对该 HTML 做出一些假设:
function addLargeHTML(parent, h) {
var d = document.createElement("div");
var pieces = extractRows(html);
d.innerHTML = pieces.core;
var tbody = $(d).find("tbody");
$(parent).append(d);
var cntr = 0;
function next() {
if (cntr < pieces.rows.length) {
tbody.append(pieces.rows[cntr]);
++cntr;
setTimeout(next, 1);
}
}
next();
}
function extractRows(h) {
var body;
var h = h.replace(/<tbody>(.*?)<'/tbody>/, function(match, p1) {
body = p1;
return "<tbody></tbody>";
});
var rows = body.match(/<tr.*?<'/tr>/g);
return {core: h, rows: rows};
}
你可以看到它在这个jsFiddle中工作(选择"逐行添加"按钮):http://jsfiddle.net/jfriend00/z7jn4p12/。
由于我无法在Firefox中重现您的原始问题,因此我真的不能说这是否可以解决您所看到的问题。 但是,它确实将HTML分解成更小的部分,所以如果这真的是问题所在,这应该会有所帮助。
Firefox 的 Skype 工具栏是一个扩展程序,用于检测网页中的电话号码,并将其重新呈现为可单击的按钮,可用于使用 Skype 桌面应用程序拨打号码。
因此,当呈现HTML时,Skype扩展程序会尝试在我的代码中找到狗屎,使浏览器暂时停止工作。
感谢所有的帮助。
相关文章:
- 从数组中删除元素的最佳方法是:javascript/jquery
- 列出没有 mysql 的元素的最佳方法是什么
- 列出每行2个元素的最佳方式是按角度重复ng
- 让 jquery 为 ajax 添加的元素工作的最佳方法是什么?
- 在保持元素一致性的同时旋转数组元素的最佳方式'id
- 使用 V8 从密集数组中删除元素的最佳方法是什么
- 迭代JSON对象并将元素打印到屏幕上的最佳方式是什么
- 复制元素的最佳方式是:只复制元素的类型和属性
- 将元素保留在 DIV 中而不继承页面样式的最佳方法
- 使用 jQuery 创建嵌套 HTML 元素的最佳方式
- 创建画布元素的最佳做法
- 在 JavaScript 中创建元素的最佳方法
- 使用innerHTML想法添加大量html元素的最佳方法是什么
- 当文档中的单个元素准备就绪时触发事件的最佳方法
- 检查元素是否有类的最佳方法是什么
- 删除 js 数组中的 html 元素的最佳方法
- 使用 JavaScript 将 DOM 元素添加到 Body 的最佳方法
- 在 DOM 中测试元素的最佳方法是什么?
- jQuery中根据其数据属性包装元素的最佳方法是什么?
- 用于显示/隐藏叠加的简单触发器元素(最佳实践)