Javascript 有没有办法延迟popstate事件?
我尝试了一些方法,看看是否可以创建一个跨浏览器的解决方案来延迟popstate事件,但没有任何运气 有人有什么想法吗 下面的内容显然不起作用,但效果如下:Javascript 有没有办法延迟popstate事件?,javascript,jquery,html,pushstate,popstate,Javascript,Jquery,Html,Pushstate,Popstate,我尝试了一些方法,看看是否可以创建一个跨浏览器的解决方案来延迟popstate事件,但没有任何运气 有人有什么想法吗 下面的内容显然不起作用,但效果如下: $(window).on('popstate', function(e) { // something here to delay the history pageload console.log('a wild console has appeared!'); }); 因此,流程将遵循以下顺序:
$(window).on('popstate', function(e) {
// something here to delay the history pageload
console.log('a wild console has appeared!');
});
因此,流程将遵循以下顺序:
- 单击浏览器“后退”或“前进”按钮
- 运行初始代码
- 页面更改前的延迟
- 换页
当活动历史记录条目更改时,将触发popstate事件。如果激活的历史记录条目是通过调用history.pushState()创建的,或者受调用history.replaceState()的影响,则popstate事件的state属性包含历史记录条目的state对象的副本 请注意,仅调用history.pushState()或history.replaceState()不会触发popstate事件popstate事件仅通过执行浏览器操作(如单击后退按钮)触发(或在JavaScript中调用history.back()) 浏览器倾向于在页面加载时以不同的方式处理popstate事件。Chrome(v34之前)和Safari在页面加载时总是发出popstate事件,但Firefox没有 以上更新的答案 你的代码可以工作。(见下文)-我添加了一个元素来触发事件(您可以在控制台中看到结果) 不过,在使用jQuery库之前,请确保在HTML中包含jQuery库
$(窗口).on('popstate',函数(e){
console.log('立即触发!');
var timer=setTimeout(函数(){
log('delayed popstate!');
清除超时(计时器);
}, 1000);
});
$(window.trigger('popstate')代码>
假设popstate事件是通过更改历史记录触发的,而不是真正的PageLoad,那么为什么不起作用呢?它应该起作用-您是否在页面中包含jquery(在使用代码之前)?很抱歉,它的控制台部分可能让人困惑-澄清一下,我所寻找的是一种在触发popstate时延迟下一页实际加载的方法。我将更新示例。感谢您提供的示例-为了清晰起见,我更新了示例,有什么想法吗?“当活动历史记录条目更改时会触发popstate事件。”-这就是我希望延迟的内容--在页面更改之前