Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法延迟popstate事件?_Javascript_Jquery_Html_Pushstate_Popstate - Fatal编程技术网

Javascript 有没有办法延迟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!'); }); 因此,流程将遵循以下顺序:

我尝试了一些方法,看看是否可以创建一个跨浏览器的解决方案来延迟popstate事件,但没有任何运气

有人有什么想法吗

下面的内容显然不起作用,但效果如下:

$(window).on('popstate', function(e) {

   // something here to delay the history pageload        

      console.log('a wild console has appeared!');

});
因此,流程将遵循以下顺序:

  • 单击浏览器“后退”或“前进”按钮
  • 运行初始代码
  • 页面更改前的延迟
  • 换页
根据popstate事件是

仅通过执行浏览器操作(如单击“后退”按钮)触发

所以我不相信当用户点击“前进”时会触发它(在某些浏览器中会有所不同)

全文如下,供参考:


当活动历史记录条目更改时,将触发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事件。”-这就是我希望延迟的内容--在页面更改之前