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 一起使用?