如何解决检测浏览器中的后退按钮单击[重复]
这个问题已经在这里有了答案:解决方法
就AJAX而言...
在使用大多数使用AJAX导航页面的特定部分的Web应用程序时回退是一个巨大的问题。我不接受“必须禁用按钮意味着您做错了事”,事实上,不同方面的开发人员长期以来都遇到了这个问题。这是我的解决方案:
window.onload = function () {
if (typeof history.pushState === \"function\") {
history.pushState(\"jibberish\",null,null);
window.onpopstate = function () {
history.pushState(\'newjibberish\',null);
// Handle the back (or forward) buttons here
// Will NOT handle refresh,use onbeforeunload for this.
};
}
else {
var ignoreHashChange = true;
window.onhashchange = function () {
if (!ignoreHashChange) {
ignoreHashChange = true;
window.location.hash = Math.random();
// Detect and redirect change here
// Works in older FF and IE9
// * it does mess with your hash symbol (anchor?) pound sign
// delimiter on the end of the URL
}
else {
ignoreHashChange = false;
}
};
}
}
据我所知,这个功能在chrome,firefox上都可以使用,但尚未测试IE。
, 请尝试以下操作(如果浏览器不支持\“ 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\',\'./#forward\');
}
});
, 我知道的最好方式
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;
};
, 我正在通过以下方式检测后退按钮:
window.onload = function () {
if (typeof history.pushState === \"function\") {
history.pushState(\"jibberish\",null);
window.onpopstate = function () {
history.pushState(\'newjibberish\',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);
window.onpopstate = function () {
if ( ((x=usera.indexOf(\"Chrome\"))!=-1) && readCookie(\'cookieChrome\')==null )
{
addCookie(\'cookieChrome\',1,1440);
}
else
{
history.pushState(\'newjibberish\',null);
}
};
}
而且非常重要的是,ѭ5会复制浏览器的历史记录。
有人知道我可以修复它吗?
, 由于后退按钮是浏览器的功能,因此很难更改默认功能。虽然有一些解决方法。看一下这篇文章:
http://www.irt.org/script/311.htm
通常,需要禁用“后退”按钮可以很好地表明编程问题/缺陷。我会寻找一种替代方法,例如设置会话变量或存储表单是否已提交的cookie。
, 我假设您正在尝试处理Ajax导航,而不是试图阻止您的用户使用后退按钮,这几乎违反了UI开发的每个原则。
以下是一些可能的解决方案:
jQuery历史
萨拉贾克斯
更好的Ajax后退按钮
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。