我希望能够在某些页面上禁用“history.go(-1)”。 我在想是否有办法清理Javascript的历史对象。想法? “history.go()”在某些浏览器(例如IE)上看起来效果不佳。真的吗?有什么解决方案吗?
答案 0 :(得分:6)
“禁用”历史记录的最佳方法是在新窗口中打开您的页面,该窗口没有历史记录。在新窗口中打开的页面没有启用后退按钮,history.go(-1)将不执行任何操作
除此之外,你没有(或应该)能做什么。
修改以明确暗示。我以为我很清楚,但显然我不是。
答案 1 :(得分:6)
您可以覆盖go
方法,但它不会让您感到太多
history.go = function(){};
这将停用history.go
的所有用途,而不仅仅是在您传递-1
时。
正如其他人所指出的那样 - 这并不能阻止用户使用浏览器上的“后退”按钮。
答案 2 :(得分:2)
您无法覆盖此浏览器行为。如果可能,那么恶意软件会试图接管每个人的历史。
答案 3 :(得分:0)
如果您尝试禁用浏览器BACK按钮,则根本无法实现。如果网站可以搞乱你的浏览器功能,你会喜欢它吗?
答案 4 :(得分:0)
你有两个选择。
使用发布请求加载页面,这将阻止用户使用后退按钮,因为您可以在服务器端捕获重新加载。 (你需要用js包装所有的超链接,所以有点工作,解决方案非常难看。)
使用DOM将内容加载到页面中。历史将无法回溯它。 (或者我错了: - |)
更清楚地描述您的问题,您可能需要更好的解决方案。
答案 5 :(得分:0)
将此信息放入您的共享页眉:
<body onLoad="history.forward()">
它始终会强制用户访问他们在您网站上访问过的最新页面。
答案 6 :(得分:0)
这很难看,但可能有用:
$(document).load(function(){
document.location.href = document.location.href + "#";
setInterval(function(){
if (window.location.hash != '#')
document.location.href = document.location.href + "#";
}, 100);
});
啊!
答案 7 :(得分:0)
德斯蒙德,
我的老板不希望后退按钮在着陆页上工作。我知道这很愚蠢,但我能做些什么。
如何使用默认页面(index.php或其他)指向前进。
的index.php:
header('location:start.html');
//or likewise with js,
document.location = 'start.html';
的start.html:
my real start
当用户点击后退按钮时,index.php将重做转发。
的问候,
答案 8 :(得分:0)
感谢所有回复。经过两天的杂耍,我现在提出了这个解决方案。 如果当前页面是首页,我使用PHP将类输出到body标签。像
这样的东西<body class='front'>
然后使用jQuery动态启用/禁用“history.go(X)”。
$(document).ready(){
if($('body.front').length>0){
$('#backbutton').click(function(){ window.history.back(); });
}else{
$('#backbutton').unbind('click');
}
}
实际上我正在处理的项目需要iframe内的站点来禁用触发父窗口后退按钮的元素。 js成为:
var backbutton=parent.window.getElementById('#backbutton');
$(document).ready(){
if($('body.front').length>0){
$(backbutton).click(function(){ window.history.back(); });
}else{
$(backbutton).unbind('click');
}
}