JavaScript或jQuery浏览器后退按钮点击检测器

Nil*_*Pun 42 javascript jquery back-button

有人可以分享经验/代码我们如何检测浏览器后退按钮点击(对于任何类型的浏览器)?

我们需要满足所有不支持HTML5的浏览器

Ben*_*uer 56

"popstate"事件仅在您之前推送某些内容时才有效.所以你必须做这样的事情:

jQuery(document).ready(function($) {

  if (window.history && window.history.pushState) {

    window.history.pushState('forward', null, './#forward');

    $(window).on('popstate', function() {
      alert('Back button was pressed.');
    });

  }
});
Run Code Online (Sandbox Code Playgroud)

对于浏览器向后兼容性,我建议:history.js

  • 这不区分后退或前进按钮,只是popstate,两者都可以 (4认同)
  • “'popstate' 事件仅在您之前推送某些内容时才有效。” 这是金!有很多例子,但最重要的一点是这个确切的报价! (2认同)

Vla*_*sla 10

有很多方法可以检测用户是否单击了"后退"按钮.但一切都取决于你的需求.尝试探索下面的链接,他们应该帮助你.

检测用户是否按下当前页面上的"后退"按钮:

按下上一页("前进")页面上的"后退"按钮后,检测当前页面是否被访问:


use*_*220 6

发现这可以很好地跨浏览器和移动back_button_override.js.

(为safari 5.0添加了一个计时器)

// managage back button click (and backspace)
var count = 0; // needed for safari
window.onload = function () { 
    if (typeof history.pushState === "function") { 
        history.pushState("back", null, null);          
        window.onpopstate = function () { 
            history.pushState('back', null, null);              
            if(count == 1){window.location = 'your url';}
         }; 
     }
 }  
setTimeout(function(){count = 1;},200);
Run Code Online (Sandbox Code Playgroud)


Ash*_*thi 6

如果是 HTML5,这就能解决问题

window.onpopstate = function() {
   alert("clicked back button");
}; history.pushState({}, '');
Run Code Online (Sandbox Code Playgroud)


Has*_*hah 5

在javascript中,导航类型2表示单击了浏览器的后退或前进按钮,并且浏览器实际上是从缓存中获取内容。

if(performance.navigation.type == 2) {
    //Do your code here
}
Run Code Online (Sandbox Code Playgroud)

  • 它适用于Chrome,但不适用于Firefox (2认同)

Eri*_*ric 0

它可在 HTML5 History API 中使用。该事件称为'popstate'