【发布时间】:2018-02-27 05:53:59
【问题描述】:
我在 Safari 中遇到问题。当我在页面上有许多 type="checkbox" 元素时,与文本输入交互变得非常缓慢和滞后。
这在 Safari 中似乎比 Chrome/Firefox(在 Mac 上)严重得多。
我在对包含复选框的海量列表进行一些过滤时注意到了性能问题,但注意到即使我删除了我的过滤代码,性能仍然很差。
片段 #1
1600 type="checkbox" 元素。尝试与 Safari 上的文本输入交互 - Fiddle Here
function make() {
var num = 1600;
for( var i = 0; i < num; i++) {
var p = document.createElement("div");
var input = document.createElement("input");
input.type = "checkbox";
p.appendChild(input);
document.getElementById("container").appendChild(p);
}
}
make();
<input type="text">
<div id="container">
</div>
片段 #2
1600 span 元素;在 Safari 中与文本输入的交互与往常一样流畅 - Fiddle Here
function make() {
var num = 1600;
for( var i = 0; i < num; i++) {
var p = document.createElement("div");
var input = document.createElement("input");
input.type = "checkbox";
p.appendChild(input);
document.getElementById("container").appendChild(p);
}
}
function make2() {
var num = 1600;
for( var i = 0; i < num; i++) {
var p = document.createElement("div");
var sp = document.createElement("span");
sp.innerHTML = Math.floor(Math.random() * 1600);
p.appendChild(sp);
document.getElementById("container").appendChild(p);
}
}
make2();
<input type="text">
<div id="container">
</div>
我是否可以在 Safari 中解决这个问题,并让性能更接近 Firefox 和 Chrome 的处理方式?
【问题讨论】:
标签: html performance dom safari