chrome的DOM更新速度比firefox慢,看起来chrome有一些渲染问题
DOM Update slow in chrome than firefox looks like chrome has some rendering issues
我写了一个代码,在DOM中转储大量节点。当我在firefox中加载它时,它呈现在2-3秒,但在chrome (ver:33)它冻结UI和呈现需要很长时间(8-10秒)。
$.ajax({
xhr: function () {
var xhr = new window.XMLHttpRequest();
xhr.addEventListener("progress", function (evt) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total * 100;
$("#fetchProgress").attr("value", percentComplete);
}
}, false);
return xhr;
},
type: 'GET',
url: "/GetSomething",
data: {},
success: function (data) {
///process and dump to DOM//
var fileLines = data.split(''n');
var htmlString = '';
for (var i = 0; i < fileLines.length; i++) {
htmlString += '<span>' + (i + 1) + '. ' + fileLines[i]+</span>;
if ((i % 1000) == 0) {
$("#textPlace").append(htmlString);
htmlString = '';
}
}
fileLines = null;
$("#textPlace").append(htmlString);
}
});
我从互联网上了解到chrome有一些渲染错误,并尝试从这个URL破解。"Chrome Bug -窗口。滚动方法拦截DOM渲染它开始工作了,但现在又不工作了。请提出建议。任何帮助都是感激的。油箱尺寸提前感谢:)
如果我理解你的代码,你有一个数组,你想与跨度捆绑在一起。您可以从代码中删除for()
(以及其中的模数(=slow)),从而节省大量时间:
htmlString = '<span>'+ fileLines.join("</span><span>") +'</span>';
这将不显示i
的数字,但你可以切换到li
的数字,而不是子弹头。
这个也可以:
var fileLines = '<span>'+ data.replace(''n', '</span><span>') +'</span>';
这是有点混乱(这可能在</span><span></span>
结束,你需要修剪'n
的修复(容易做到)),但它不需要把它变成一个数组,这应该加快事情
查看是否可以在此函数下避免append
to html
if ((i % 1000) == 0) {
$("#textPlace").append(htmlString);
htmlString = '';
}
和只有一个append
在你的代码的最后。你想限制DOM操作——它会触发多个浏览器流,从而影响浏览器性能。
Google Dev:加速JavaScript:使用DOM
从上面的链接中取出来,你可以用这样的东西来代替
var anchor, fragment = document.createDocumentFragment();
for (var i = 0; i < 10; i ++) {
anchor = document.createElement('a');
anchor.innerHTML = 'test';
fragment.appendChild(anchor);
}
element.appendChild(fragment);
相关文章:
- chrome中的Facebook JavaScript SDK Connect问题
- Angularjs ng-options 问题仅适用于 Chrome 浏览器
- 火狐中的多个问题,但在 chrome 中工作正常,没有一个问题
- 在 Chrome 扩展程序中将鼠标悬停在广告上使用时遇到问题
- Chrome 中的 JavaScript 问题
- Google Chrome 问题与 css 和 JScript
- 如何在文本框点击事件中设置文本框中字符的第一个位置---Chrome问题
- “卸载前”Chrome 问题
- 解决 Chrome 问题423256:将多个选择滚动到视图中
- JavaScript重定向Chrome问题
- Chrome问题-AJAX插入文件输入未上传文件
- Chrome问题与CSS过渡和溢出y:滚动或自动
- 奇怪的jQuery + Chrome问题
- Jquery对话框chrome问题-滚动不可见时打开第二次
- 奇怪的javascript chrome问题与菜单
- 动态生成img标签的Chrome问题
- 如何打开一个新的标签页(谷歌chrome问题)
- 关于Jquery/Javascript和NPAPI chrome问题
- Cordova OpenTok集成Chrome问题
- HTML5和文件API在Chrome问题