我在修改IE8中XP的位置哈希時遇到了問題。簡單地調用:window.location.hash賦值在IE8中痛苦地緩慢
self.location.hash = "whatever"
需要800ms的〜1800ms
我不知道有什麼可以慢下來。我在其他一些網站上查看了相同的說明,但速度並不慢。
任何線索可以讓它如此緩慢?我很抱歉,但我不能舉一個在線的例子。
編輯: 這是我在IE瀏覽器控制檯中看到什麼,輸入:
console.log(new Date().getTime());
self.location.hash = "sfdsd";
console.log(new Date().getTime());
輸出:
JOURNAL : 1326468325447
JOURNAL : 1326468327390
undefined
這使得幾乎2000毫秒,如果我讀正確,對於單分配:/。
EDIT2:因爲它似乎並不夠清晰,更preofiled代碼:
var profileThat = function() {self.location.hash = "whatever"};
$('#keywatchHeader').click(profileThat);
探查結果兩次點擊:
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 :
我出於好奇而對樹上的節點號進行了一些測試,結果令人驚訝。這樣的電話後:後
document.getElementsByTagName('*').length; //3621
$('#keywatchPanels').children().remove();
document.getElementsByTagName('*').length; //332
剖析給600毫秒,而不是1700ms每次通話!但是我很少用節點號來影響標籤寫作。
(edit4):我發現此相關的問題:Why is this piece of Javascript code so slow?(但這裏的答案只是「刪除」)
你的頁面有多大?任何其他運行檢查散列的代碼? – epascarello 2012-01-13 13:21:49
你的意思是什麼?像素寬度,重量,元素?有YUI2歷史管理器正在檢查散列,但它只是這個指令誰吸這麼多時間,無論我是否在代碼或控制檯執行它。 – BiAiB 2012-01-13 13:24:37
我無法重現。在IE8.0.6001.18702上佔用大約100ms的時間。你是如何衡量表現的?您是否使用[IE腳本分析器](http://msdn.microsoft.com/en-us/library/dd565629%28v=vs.85%29.aspx#_start)?通過IE腳本分析器和「知覺」兩者均可獲得 – user123444555621 2012-01-13 14:23:05