IE8 for XPで位置ハッシュを変更することに問題があります。単に呼び出す:window.location.hash IE8で痛いほど遅い割り当て
self.location.hash = "whatever"
約800ms〜1800ms
私はこれを遅らせることができるか見当がつかないかかります。私は他のいくつかのサイトで同じ指示をチェックしましたが、それほど遅くはありません。
何がそんなに遅くなるのか?申し訳ありませんが、私はオンラインの例を与えることはできません。
EDIT:
console.log(new Date().getTime());
self.location.hash = "sfdsd";
console.log(new Date().getTime());
出力:
JOURNAL : 1326468325447
JOURNAL : 1326468327390
undefined
私が正しく読めば、ほとんど2000ミリ秒になり、単一のためにここで が入力されると、私はIEコンソールで何を得るのです割り当て:/。
EDIT2:
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:2回のクリックで
var profileThat = function() {self.location.hash = "whatever"};
$('#keywatchHeader').click(profileThat);
プロファイラ結果:それは十分に明確で、より多くのpreofiledコードはいないようですので、 :
私は好奇心のためツリー上のノード番号についていくつかのテストを行い、結果は驚くべきことです。そのような呼び出しの後:その後
document.getElementsByTagName('*').length; //3621
$('#keywatchPanels').children().remove();
document.getElementsByTagName('*').length; //332
プロファイラは、600msのの代わりに、通話ごと1700ms与えます!しかし、ほとんどの場合、ノード番号はハッシュタグの書き込みに影響します。
(edit4)
:私はこの関連の質問見つけた:(しかし、ここでは答えは単に「それを削除」された)Why is this piece of Javascript code so slow?は
最後に
あなたのページはどのくらいの大きさですか?ハッシュをチェックしている他のコード? – epascarello
大規模なものはどういう意味ですか?ピクセル幅、重量、要素?ハッシュをチェックしているYUI2履歴マネージャーがありますが、それはコードでそれを実行するかコンソールで実行するかにかかわらず、その多くの時間を吸うのはこの命令だけです。 – BiAiB
私はそれを再現できません。 IE8.0.6001.18702で約100msかかるどのようにパフォーマンスを測定しましたか? [IEスクリプトプロファイラ](http://msdn.microsoft.com/en-us/library/dd565629%28v=vs.85%29.aspx#_start)を使用しましたか? – user123444555621