powstaje pytanie to z mojego poprzedniego postu why a tiny reordering of DOM Read/Write operations causes a huge performance difference.dlaczego zastępując InnerHTML z innerText powoduje> 15X spadek wydajności
rozważyć następujący kod:
function clearHTML(divs) {
Array.prototype.forEach.call(divs, function (div) {
contents.push(div.innerHTML);
div.innerHTML = "";
});
}
function clearText(divs) {
Array.prototype.forEach.call(divs, function (div) {
contents.push(div.innerText); //innerText in place of innerHTML
div.innerHTML = "";
});
}
http://jsfiddle.net/pindexis/ZZrYK/
wyniki mojego testu dla n = 100:
ClearHTML: ~ 1ms
czystym tekście: ~ 15ms
dla n = 1000:
ClearHTML: ~ 4ms
czystym tekście: ~ 1000ms
Przetestowałem kod na Google Chrome i IE i uzyskać podobne rezultaty (Firefox nie obsługuje innerText).
Edit: różnica między tymi dwoma funkcjami nie jest spowodowany przez powolność funkcji innerText porównaniu do innerHTML, to na pewno (próbowałem usunięcie div.innerHTML =""
i dostał zastrzyk wydajności), nie jest dziwne reflow przeglądarka odbywają się tutaj .
http://jsperf.com – SLaks
Jeden ma interpretować tagi HTML i powrót tylko widocznego tekstu. Drugi po prostu wypluwa surowy HTML. –
Odpowiednikiem Firefoksa jest "textContent". – SLaks