重写history.pushState导致歌剧11错误
作者:互联网
我正在通过润滑脂脚本/ 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);
该代码在FF4和Chrome中正常运行,但是在Opera 11中,如果页面调用了history.replaceState命令,则会出现以下错误:
Uncaught exception: TypeError: ‘window.history.replaceState’ is not a function
有谁知道我该如何解决以上代码,使其与Opera以及Chrome和Firefox一起使用?
解决方法:
在Opera 11.00,修订版1156中,支持的历史记录API是这些
>>> history.
back, current, forward, go, length, navigationMode
完整的HTML5 history API尚未包含在Opera 11.00中.通常,如果您想发现,探索受支持的内容,则可以轻松使用Web开发人员工具dragonfly的控制台方式.
标签:html5,history,cross-browser,opera,javascript 来源: https://codeday.me/bug/20191023/1913952.html