[解決済み] HTML5 の履歴ポップステートでブラウザのスクロールを防止する
質問
popstate イベントが発生したときに、ドキュメントをスクロールするデフォルトの動作を防ぐことは可能ですか?
私たちのサイトでは jQuery アニメーション スクロールと History.js を使用しており、状態の変更により、pushstate または popstate を介してページの異なる領域へユーザーがスクロールするはずです。問題は、popstate イベントが発生すると、ブラウザが前の状態のスクロール位置を自動的に復元することです。
私は、ドキュメントの幅と高さが 100% に設定されたコンテナー要素を使用して、そのコンテナー内のコンテンツをスクロールしてみました。私が発見したその問題は、ドキュメントをスクロールするのと同じくらいスムーズではないようです。
私はまた、ユーザーが開始したスクロール中にドキュメントのスクロール位置を保存し、ブラウザが (popstate で) ページをスクロールした後にそれを復元することを試みました。これは、Firefox 12 では正常に機能しますが、Chrome 19 では、ページがスクロールされて復元されるためにちらつきが発生します。これは、スクロールとスクロール イベントが発生する (スクロール位置が復元される) 間に遅延があるためだと推測しています。
Firefox は popstate が発生する前にページをスクロールし (そして scroll イベントを発生させ)、Chrome は popstate を最初に発生させてからドキュメントをスクロールさせます。
私が見た履歴 API を使用するすべてのサイトは、上記のソリューションと同様のものを使用するか、ユーザーが戻る/進むときにスクロール位置の変更を無視するだけです (例: GitHub)。
popstate イベントでドキュメントがまったくスクロールされないようにすることは可能ですか?
どのように解決するのですか?
if ('scrollRestoration' in history) {
history.scrollRestoration = 'manual';
}
( Googleから発表された を2015年9月2日に発表)
ブラウザに対応しました。
Chrome: サポートされています (46以降)
Firefox: サポートされています (46 以降)
IE: サポートされていません。
Edge: サポートあり (79年以降)
Opera: サポートされています (33 以降)
サファリ: サポートあり
詳細については MDN でのブラウザの互換性 .
関連
-
[解決済み] Webフォームのフィールド/入力タグでブラウザのオートコンプリートを無効にするにはどうすればよいですか?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み] 画面サイズ、現在のウェブページ、ブラウザウィンドウのサイズを取得する
-
[解決済み] スクロールバーを隠すが、スクロールはできる状態
-
[解決済み] HTML5/Canvas/JavaScriptを使用してブラウザ内のスクリーンショットを撮影する
-
[解決済み】div内の要素にスクロールする方法は?
-
[解決済み】HTML5入力のプレースホルダの色をCSSで変更する。
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] アサインの左側にJavascriptのオブジェクトブラケット表記({ ナビゲーション } =)があります。
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] jqueryはjavascriptのライブラリなのかフレームワークなのか?[クローズド]
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。
-
[解決済み] Node.jsのES6クラスをrequireで作る
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
-
[解決済み] ブラウザの更新時に自動的にスクロールしないようにする