2012-05-02 9 views

答えて

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); 
関連する問題