2016-07-14 10 views
1

IE10でドキュメントが「ジャンプ」するのを防ぐための方法はありますか?以下のコードは、ChromeとFirefoxの両方を解決します。注意点としてはIE10でlocation.hashが「ジャンプ」しないようにする

if (location.hash) { 
    setTimeout(function() { 
    window.scrollTo(0,0); 
    }, 1); 
} 

、私はまた、しかし、運と、同様jQueryの$(window)でこれを試してみました。

+3

なぜページをスクロールしたくない場合はハッシュを使用しますか? – epascarello

+0

私は別のページの特定のタブにリンクしています - そのタブ内のコンテンツにユーザーがアクセスすることを望みますが、タブ/ハッシュがあるページを強制的に押されることはありません(左ナビゲーションでは、 )。コンテンツは、ハッシュが存在する場所の上から始まります。 – laurendorman

答えて

0

ローレンとの会談後、我々は決定:開発ツールを開いてコマンドを実行して、IE 10で

  • window.scrollTo(0,0)作品を。だから私たちはコードが孤立して動作することを知っていましたが、何か他のことが間違っていたり、コードがページ上にあってページが一番上にならないようになったりしていました。
  • クイックハックとして、競合状態かどうかを確認するために間隔を1ミリ秒から2000ミリ秒に増やしました。このになりましたが、ページのフリッカー/ジャンプにより望ましくありません。フリッカー効果を最小限に抑えるために、2000ミリ秒から低い値に値を下げました。
  • ページをリロードするだけでなく、別のルートから最初にページに移動するときにページが上にスクロールされません。おそらくページ上の別のJavaScriptが異なるロジックパスを引き起こします。

思考:

  • は、おそらく唯一のIE10でJavaScriptの実行を遅いために起こりました。他のブラウザは、JavaScriptをより速く解析し解釈します。
  • スクロールはアンカーの代わりにクエリパラメータを使用して削除できますが、コードはリファクタリングされ、あまりきれいなURLパスにはなりません。すなわちhttps://<url>?tab-name=TabNameToSelectスクロールは、サーバー側またはクライアント側のルーティングを介して除去することができますが、より大きな開発努力を必要とする...ルートが{controller}/{action}/{tab-id}または{controller}/{action}/{item-id}/{tab-id}

クイック定着液のようなパターンを持っている可能性が

  • // quick and dirty franken'fix 
    if (location.hash) { 
        setTimeout(function() { 
        window.scrollTo(0,0); 
        }, 250); // increment interval to "prevent" race condition 
    } 
    
  • 関連する問題