Öğeleri seçebileceğiniz bir çoklu seçim listesi üzerinde çalışıyorum ve daha sonra bu öğeleri listenin içinde yeniden sıralamanıza izin veren bir "Yukarı" veya "Aşağı" düğmesini tıklatın.Neden bu javascript IE'de bu kadar yavaş çalışıyor?
basit bir müstakil örnek var:
<html>
<head>
<title>Example</title>
<script src="https://www.google.com/jsapi"></script>
<script>
google.load('jquery', '1.4.1');
</script>
</head>
<body>
<select id="selectedDataPoints" multiple="multiple">
<option>Pig</option>
<option>Duck</option>
<option>Dog</option>
<option>Zebra</option>
<option>Snake</option>
<option>Giraffe</option>
<option>Cow</option>
</select>
<input type="button" id="btnReorderUp" value="Up" />
<input type="button" id="btnReorderDown" value="Down" />
</body>
</html>
<script type="text/javascript">
var DataPointSelector = (function() {
var $selectedList = $('#selectedDataPoints');
$('#btnReorderUp').click(function(e) {
moveUp();
e.preventDefault();
});
$('#btnReorderDown').click(function(e) {
moveDown();
e.preventDefault();
});
function moveUp() {
var select = $selectedList[0];
for (var i = 1, n = select.options.length; i < n; i++)
if (select.options[i].selected && !select.options[i - 1].selected)
select.insertBefore(select.options[i], select.options[i - 1]);
}
function moveDown() {
var select = $selectedList[0];
for (var i = select.options.length - 1; i > 0; i--)
if (select.options[i].selected && !select.options[i + 1].selected)
select.insertBefore(select.options[i + 1], select.options[i]);
}
}());
</script>
Ancak Yukarı/Aşağı düğmesine IE7/8'de etkili olması için tam anlamıyla 3-8 saniye sürer. İlk tıklama bazen hızlı olacaktır ancak bundan sonra seçim listesinin yeni konumlarla güncellenmesi çok uzun zaman alacaktır (özellikle de birkaç öğeniz seçildiyse).
Bu sorun, Chrome/FF'de mevcut değil. Bu basit yeniden siparişin çok yoğun olacağını düşünmemiştim!
Hareket halindeyken/moveDown işlevlerini hızlandırmama yardımcı olacak herhangi bir bilgiye sahip olan var mı ?!
Bu kodları döktüm ve bu kadar uzun sürmeli. Sistem kaynaklarını veya başka bir şeyi kapatıp kapatmadığını biliyor musunuz? –
Şimdi, bu sizi şok edecek ama IE'nin JavaScript performansı yavaş/kötü. – Powerlord
alt satır: IE yavaş. Açıkçası bende bırakırım; Tarayıcılarının berbat olduğunu gösteren kanıtlar varsa, kullanıcıların yeni sürüme geçmeleri için iyi bir teşvik oluşturur. (tüm ciddiyet içinde, bu muhtemelen bir seçenek değil, ve bir çalışma çözümü verildi, biliyorum ama marjinal olduğu durumlarda benim IE kullanıcıları acı çekmesine izin) – Spudley