浏览器后退按钮单击使用javascript双击

时间:2016-03-11 15:22:49

标签: javascript

每当用户重定向到我网站中的其他网页时,我都会在每个页面中使用 id 将页面滚动到某个固定的费率。 我的问题是,用户需要双击浏览器的后退按钮将页面重定向到上一页,因此,只要用户单击浏览器后退按钮,我就需要设置双击浏览器的后退按钮。 。
谢谢

1 个答案:

答案 0 :(得分:1)

简短回答:



document.onmouseover = function() {
  //User's mouse is inside the page.
  window.innerDocClick = true;
}

document.onmouseleave = function() {
  //User's mouse has left the page.
  window.innerDocClick = false;
}

window.onhashchange = function() {
  if (!window.innerDocClick) {
    //Browser back button was clicked
    window.history.go(-2);
  }
}




说明:

window.history对象包含用户在浏览器中访问过的网址。 window.history.go(x)函数用于使浏览器转到历史记录中的相对页面(所以在这种情况下-2返回2页)。

为了检测浏览器中后退按钮何时被按下,我进行了快速搜索,找到了this question here关于"如何检测浏览器后退按钮事件 - 跨浏览器"的解决方案。接受的答案有一个非常全面和详细的方法,我曾经得到上面的代码片段,你一定要阅读。

上述代码片段的快速概述是,它使用2个事件来检测用户的鼠标是否在页面文档中。如果它不在页面文档中,那么这意味着用户不会点击任何页面内元素,例如超链接等,这些元素也可能正在改变URL。 ' onhashchange'事件检测到位置哈希值何时发生变化,然后检查用户的鼠标是否在文档中,如果没有则执行双后退按钮。

请注意:如果用户按下退格键(或任何其他热键),此方法不会涵盖。接受的答案确实涵盖了使用jQuery执行此操作的方法,如果不需要jQuery,它看起来好像可以修改为在vanilla JavaScript中工作。 此方法也可能不包括iPad或其他平板电脑和移动设备等设备,因为它们没有鼠标事件。此外,很有可能无法覆盖mac触控板上的滑动事件。没有这些设备,我不可能测试它们。