我必须检测用户是否点击了后退按钮。为此,我使用了
window.onbeforeunload = function (e) {
}
如果用户单击“后退”按钮,它就会起作用。但是,如果用户单击浏览器的F5或reload按钮,也会触发此事件。我该如何解决这个问题?
发布于 2013-08-22 21:52:37
请尝试一下(如果浏览器不支持"onbeforeunload"):
jQuery(document).ready(function($) {
if (window.history && window.history.pushState) {
$(window).on('popstate', function() {
var hashLocation = location.hash;
var hashSplit = hashLocation.split("#!/");
var hashName = hashSplit[1];
if (hashName !== '') {
var hash = window.location.hash;
if (hash === '') {
alert('Back button was pressed.');
}
}
});
window.history.pushState('forward', null, './#forward');
}
});
发布于 2013-04-23 00:34:01
我所知道的最好的方法
window.onbeforeunload = function (e) {
var e = e || window.event;
var msg = "Do you really want to leave this page?"
// For IE and Firefox
if (e) {
e.returnValue = msg;
}
// For Safari / chrome
return msg;
};
发布于 2014-01-22 00:56:12
我通过这种方式检测到后退按钮:
window.onload = function () {
if (typeof history.pushState === "function") {
history.pushState("jibberish", null, null);
window.onpopstate = function () {
history.pushState('newjibberish', null, null);
// Handle the back (or forward) buttons here
// Will NOT handle refresh, use onbeforeunload for this.
};
}
它可以工作,但我必须在Chrome中创建一个cookie来检测我是第一次进入页面,因为当我进入页面时,没有cookie的控制,浏览器在没有单击任何后退按钮的情况下执行后退操作。
if (typeof history.pushState === "function"){
history.pushState("jibberish", null, null);
window.onpopstate = function () {
if ( ((x=usera.indexOf("Chrome"))!=-1) && readCookie('cookieChrome')==null )
{
addCookie('cookieChrome',1, 1440);
}
else
{
history.pushState('newjibberish', null, null);
}
};
}
非常重要的是,history.pushState("jibberish", null, null);
复制了浏览器的历史记录。
有人知道我能把它修好吗?
https://stackoverflow.com/questions/6359327
复制相似问题