2011-01-25 23 views
3

greasemonkeyスクリプト/ opera拡張機能を使用して、次のコードをウェブページに挿入してhistory.pushStateコマンドをトラップするので、いつでも処理を実行できます。pushStateコマンドは後で続行します。history.pushStateを無効にすると、オペラにエラーが発生する

(function(history){ 
    var pushState = history.pushState; 
    history.pushState = function(state) { 
     if (typeof history.onpushstate == "function") { 
      history.onpushstate({state: state}); 
     } 
     alert('pushstate called') 
     return pushState.apply(history, arguments); 
    } 
})(window.history); 

コードはFF4とChromeで正常に動作しますが、ページがhistory.replaceStateコマンドを呼び出す場合、オペラ11で、私は、次のエラーを取得する:

Uncaught exception: TypeError: 'window.history.replaceState' is not a function

誰も私が修正できる方法を知っています上記のコードはOperaとChromeとFirefoxで動作しますか?

答えて

1

When can I use …によると、Operaはまだ履歴APIをサポートしていないため、その例外が発生します。

+0

涼しいリソース – user280109

0

上記のコードを実行する前に、解決策を見つけたら、ちょうどhistory.replacestateを確認してください。存在しない場合は、単純なコードを実行しないでください。

+0

私は作者です、どうして私は自分の批判をしたり、自分自身からの説明を要求する必要がありますか? – user280109

+0

'誰もOperaとChromeとFirefoxで動作するように上記のコードを修正する方法を知っていますか? 'これは質問への答えを提供しませんが、それがサポートされていない場合、メソッドを除外します。 – andlrc

4

はオペラ11.00、リビジョン1156では、サポート履歴APIは、これらの

>>> history. 
back, current, forward, go, length, navigationMode 

フルHTML5 history APIがまだオペラ11.00で覆われていないです。一般に、サポートされているものを発見したい場合は、Web開発ツールdragonflyのコンソールモードを簡単に使用できます。

関連する問題