2013-06-11 13 views
6

私のためにhtml4Modeオプションを使用することができません。history.jsで強制的にhtml4フォールバック

非常に単純な2ページのアプリケーションでajaxifyスクリプト(https://github.com/browserstate/ajaxify)を使用しています。 html5対応のブラウザではすべてうまく動作しますが、テスト目的でhtml4フォールバックを何も変更しないようにしたい場合、ヒストリはオプションを無視してhtml5プッシュ状態URLを使用し続けているようです。

History.options.html4Mode = true; 

(私はv1.8b1 jqueryのHTML4 + 5バンドルスクリプトを使用しています)

があります:私はちょうど(準備DOMに)追加ajaxifyスクリプトを変更し、フォールバックを強制的に

これを稼働させる方法は?

+0

(編集オレックスのおかげで) – smarques

答えて

9

history.jsのオプションを適切に初期化するには、スクリプトがページに含まれる前にオプションを設定する必要があります。これは、次のようになります:

<script type="text/javascript" language="javascript"> 
    window.History = { options: { html4Mode: true} }; 
</script> 
<script src="/scripts/jquery.history.min.js" type="text/javascript"></script> 

を、それがHTML4フラグが用意DOMに設定する必要条件であるならば、あなたは同じようにdelayInitオプションを使用することができます。ちょうどあなたが準備ができたら、あなたは手動でHistory.init()を呼び出す必要があることに注意してください。

<script type="text/javascript" language="javascript"> 
    window.History = { options: { delayInit: true} }; 
</script> 
<script src="/scripts/jquery.history.min.js" type="text/javascript"></script> 
... 
<script type="text/javascript" language="javascript"> 
    $(document).ready(function() { 
     var userInput = true; 
     //some code gathering user input or something 
     window.History.options.html4Mode = userInput; 
     window.History.init(); 
    ); 
</script> 

ソースの: https://github.com/browserstate/history.js/pull/195 https://github.com/browserstate/history.js/issues/303

注:私は成功した最初の例で示した方法を使用しました。私は個人的にテストしていません。

+1

これはうまくいき、答えとして受け入れるべきです。 – daw

関連する問題