Tôi gặp sự cố khi sửa đổi băm vị trí trong IE8 cho XP. chỉ đơn giản gọi:phân bổ window.location.hash đau đớn chậm trong IE8
self.location.hash = "whatever"
mất khoảng 800ms ~ 1800ms
Tôi không có ý tưởng những gì có thể làm chậm này xuống. Tôi đã kiểm tra cùng một hướng dẫn trên một số trang web khác và nó không phải là chậm.
Bất kỳ manh mối nào có thể làm chậm quá trình này? Tôi xin lỗi nhưng tôi không thể đưa ra một ví dụ trực tuyến.
EDIT: Dưới đây là Những gì tôi có được trong IE console, đầu vào:
console.log(new Date().getTime());
self.location.hash = "sfdsd";
console.log(new Date().getTime());
đầu ra:
JOURNAL : 1326468325447
JOURNAL : 1326468327390
undefined
mà làm cho gần 2000 mili giây, nếu tôi đọc một cách chính xác, đối với một đơn chỉ định: /.
EDIT2: vì nó dường như không đủ rõ ràng, mã preofiled hơn:
var profileThat = function() {self.location.hash = "whatever"};
$('#keywatchHeader').click(profileThat);
kết quả hồ sơ với hai lần nhấp chuột:
profileThat 2 3475,00 3475,00 hidden 4 50,07 50,07 http://192.168.0.30/kw5/js/jquery/jquery-1.6.2.js 6 608 eventHandle 8 3525,07 40,06 http://192.168.0.30/kw5/js/jquery/jquery-1.6.2.js 2 595 get 4 20,03 20,03 http://192.168.0.30/kw5/js/jquery/jquery-1.6.2.js 6 419 get 6 10,01 10,01 http://192.168.0.30/kw5/js/yui2/dom/dom.js 96
EDIT3 :
Tôi chạy một số kiểm tra về số nút trên cây ra khỏi sự tò mò và kết quả là đáng ngạc nhiên. Sau một cuộc gọi như vậy:
document.getElementsByTagName('*').length; //3621
$('#keywatchPanels').children().remove();
document.getElementsByTagName('*').length; //332
sau đó các hồ sơ cung cấp cho 600ms thay vì 1700ms cho mỗi cuộc gọi! Nhưng tôi khó với số nút sẽ ảnh hưởng đến viết hashtag.
(edit4): Tôi đã tìm thấy câu hỏi có liên quan này: Why is this piece of Javascript code so slow? (nhưng câu trả lời ở đây là chỉ là "loại bỏ nó")
Trang của bạn lớn bao nhiêu? Bất kỳ mã nào khác đang chạy kiểm tra băm? – epascarello
bạn muốn nói chính xác là gì? pixel chiều rộng, trọng lượng, các yếu tố?Có trình quản lý lịch sử YUI2 đang kiểm tra hàm băm nhưng nó chỉ là hướng dẫn này, người hút nhiều thời gian đó, cho dù tôi có tồn tại nó trong mã hay bảng điều khiển. – BiAiB
Tôi không thể tái tạo điều đó. Mất khoảng 100ms ở đây trên IE8.0.6001.18702. Bạn đo lường hiệu suất như thế nào? Bạn đã sử dụng [trình biên tập tập lệnh IE] (http://msdn.microsoft.com/en-us/library/dd565629%28v=vs.85%29.aspx#_start) chưa? – user123444555621