クロームの場合は、ページの読み込み時にイベントが発生しますが、firefoxの場合は、戻るボタンまたは進むボタンを押した場合にのみ、右の呼び出しが発生します。どのようにすべてのブラウザでうまく動作するスクリプトを書くか?すべてのブラウザでwindow.onpopstateを処理する理想的な方法は何ですか?
0
A
答えて
1
私はこの1つ(実際には、私がやった)でブラウザの検出を行っています。私はpopstateイベントにバインドされている機能で、この条件節、それがで呼ばれています最初の時間を追加しました
// chrome fires a popstack event on page load, so do a check before proceeding
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
if(is_chrome && !$('body').data('allow-popstate-action')) {
$('body').data('allow-popstate-action', true);
return false;
}
:私はに対してテストするブールフラグを設定する)(jQueryの.dataセクションを使用していますChrome(ページ読み込み中)では、何もせずに関数を終了するだけです。次回(前/後ろボタン)、それは正常に動作します。
私はこのプロジェクトで古いバージョンのjQueryが残っているので、jQuery.browser.webkitを使用できませんでしたが、おそらく可能です。
0
もう少しエレガントな方法は、ポップステートリスナーを追加する前に1msのタイムアウトを追加することです。非同期コードが実行される前に最初のポップステートが起動するので、popstate関数は正しく動作します(前方/後方アクションのみ)。
window.setTimeout(function(){
$(window).on('popstate', function(event){
// do things
});
}, 1);
関連する問題
- 1. エラーログの処理パイプラインを処理するための慣用的な機能的な方法は何ですか?
- 2. Core Dataでマルチスレッドを使用する理想的な方法は何ですか?
- 3. ブラウザでストリーミングJSコンテンツを処理する最善の方法は何ですか?
- 4. indexeddbデータベースにデータを格納する理想的な方法は何ですか?
- 5. C#:プロジェクトにスプラッシュスクリーンを追加する理想的な方法は何ですか?
- 6. Windowsアプリケーションとサービスパッケージを作成する理想的な方法は何ですか?
- 7. 致命的なエラーを処理して処理する方法
- 8. FB.Event.subscribeを処理する適切な方法は何ですか?
- 9. 理想的なデータポーリング方式ですか?
- 10. Ruby on Railsで地理的なロケールを処理する適切な方法は何ですか?
- 11. 動的コンテンツのブラウザの戻るボタンを処理する方法
- 12. FileSystemWatcher InternalBufferSizeの理想的なサイズは何ですか?
- 13. Webクローラーの理想的なプログラム言語は何ですか?
- 14. 理想的なデバッガで何をしたいですか?
- 15. ブラウザで無効なJSを処理する方法
- 16. すべてのGCMプッシュを手動で処理する適切な方法は何ですか?
- 17. データベースを処理する正しい方法は何ですか?
- 18. セッションタイムアウトを正常に処理する方法は何ですか?
- 19. MVC/PHP:コントローラーアクションで検証を処理し、メッセージを表示する理想的な方法は?
- 20. スタンドアロンアプリケーションの理想的なデータソースですか?
- 21. C#で連想配列を処理する最も簡単な方法は何ですか?
- 22. ストアドプロシージャでこのエラーを処理する適切な方法は何ですか?
- 23. Beautiful SoupでPythonのhtml解析でxmlデータを使用する理想的な方法は何ですか?
- 24. Javaのメソッドで複数の戻り値を処理する理想的な方法
- 25. jsの矢印関数の理想的な使い方は何ですか?
- 26. Pythonでクリーンアップメソッドを実装する理想的な方法
- 27. React.jsでコンポーネントを順番にロードする理想的な方法
- 28. 理想的な言語ですか?
- 29. FortranでMPIコミュニケータを処理する適切な方法は何ですか?
- 30. PHPでmysqlエラーを処理する適切な方法は何ですか?