我必须检测用户是否点击了后退按钮.为此,我正在使用
window.onbeforeunload = function (e) {
}
Run Code Online (Sandbox Code Playgroud)
如果用户单击后退按钮,它可以工作.但是,如果用户单击F5或重新加载浏览器按钮,也会触发此事件.我该如何解决?
编辑2:答案似乎都没有用.甚至不是我之前标记为这个问题的答案.任何帮助表示赞赏.谢谢.
首先,我搜索了一个关于创建"返回"链接的方法,该链接允许用户返回上一页,这有两种方法:
<a href="javascript:history.go(-1)">[Go Back]</a>
Run Code Online (Sandbox Code Playgroud)
和...
<a href="#" onclick="history.go(-1);return false;">[Go Back]</a>
Run Code Online (Sandbox Code Playgroud)
这两个中的哪一个是更好的选择?为什么?(另外,请介绍一下浏览器兼容性.)
这是问题的一半.现在,如果我的第一页是用户访问的,那么"返回"链接将不起作用,对吧?(因为窗口或标签没有预先存在的历史记录.)在这种情况下,我希望链接回退并将用户带到http://example.com.
即如果历史存在,则用户将被带到上一页,如果不存在,则将其带到http://example.com.
我怎么做?希望有人能提供帮助.
编辑:请注意我不懂JavaScript,所以请你的答案解释.谢谢.
我有以下尝试操作堆栈的代码window.history:
console.log("before:" + window.history.length);
window.history.pushState(null, null, '/page1');
console.log("after:" + window.history.length);
Run Code Online (Sandbox Code Playgroud)
尽管我添加了一个状态,但在beforeand中总是打印相同的内容:after
before:50
after:50
Run Code Online (Sandbox Code Playgroud)
为什么pushState不增加历史长度?顺便说一句,50即使我刷新页面,长度也总是如此。