每当用户重定向到我网站中的另一个页面时,我在每个页面中都使用id来将页面滚动到某个固定的速率.我的问题是,用户需要双击浏览器的后退按钮将页面重定向到上一页,因此每当用户单击浏览器后退按钮时,我需要设置双击浏览器的后退按钮..
谢谢
简短回答:
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);
}
}Run Code Online (Sandbox Code Playgroud)
解释:
该window.history对象包含用户在浏览器中访问过的 URL。该window.history.go(x)函数用于使浏览器转到历史记录中的相关页面(因此在本例中 -2 表示返回 2 页)。
为了检测何时按下浏览器中的后退按钮,我进行了快速搜索,并在此处找到了有关“如何检测浏览器后退按钮事件 - 跨浏览器”的问题的解决方案。接受的答案对此有一个非常完整和详细的方法,我用它来获取上面的代码片段,您绝对应该阅读。
快速概述上述代码片段的作用是,它使用 2 个事件来检测用户的鼠标是否位于页面文档内。如果它不在页面文档中,则意味着用户不会单击任何页面内元素(例如超链接等),这些元素也可能会更改 URL。'onhashchange' 事件检测位置哈希何时更改,然后检查用户的鼠标是否在文档内,如果不在,则执行双后退按钮。
请注意:此方法不包括用户按下退格键(或任何其他热键)的情况。接受的答案确实涵盖了使用 jQuery 执行此操作的方法,如果不需要 jQuery,它看起来好像可以修改为在普通 JavaScript 中工作。此方法也可能不适用于 iPad 或其他平板电脑和移动设备等设备,因为它们没有鼠标事件。此外,Mac 触控板上的滑动事件很可能不会被涵盖。没有这些设备,我不可能测试它们。
| 归档时间: |
|
| 查看次数: |
877 次 |
| 最近记录: |