重写history.pushState会导致opera 11中出现错误

use*_*109 5 html javascript opera history cross-browser

我通过 Greasemonkey 脚本/opera 扩展将以下代码注入到网页中以捕获该history.pushState命令,这样我就可以在它触发时进行一些处理,并且仍然允许该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);
Run Code Online (Sandbox Code Playgroud)

该代码在 FF4 和 Chrome 中工作正常,但在 Opera 11 中,如果页面调用命令,我会收到以下错误history.replaceState

未捕获的异常:TypeError:'window.history.replaceState'不是函数

有谁知道如何修复上述代码以与 Opera 以及 Chrome 和 Firefox 一起使用?

Mar*_*pel 1

根据何时可以使用 \xe2\x80\xa6 Opera 还不支持 History API,因此这就是您收到该异常的原因。

\n