在某些页面上禁用“history.go(-1)”

时间:2010-11-01 16:23:36

标签: javascript

我希望能够在某些页面上禁用“history.go(-1)”。 我在想是否有办法清理Javascript的历史对象。想法? “history.go()”在某些浏览器(例如IE)上看起来效果不佳。真的吗?有什么解决方案吗?

9 个答案:

答案 0 :(得分:6)

“禁用”历史记录的最佳方法是在新窗口中打开您的页面,该窗口没有历史记录。在新窗口中打开的页面没有启用后退按钮,history.go(-1)将不执行任何操作

除此之外,你没有(或应该)能做什么。

修改以明确暗示。我以为我很清楚,但显然我不是。

答案 1 :(得分:6)

您可以覆盖go方法,但它不会让您感到太多

history.go = function(){};

这将停用history.go的所有用途,而不仅仅是在您传递-1时。

正如其他人所指出的那样 - 这并不能阻止用户使用浏览器上的“后退”按钮。

答案 2 :(得分:2)

您无法覆盖此浏览器行为。如果可能,那么恶意软件会试图接管每个人的历史。

答案 3 :(得分:0)

如果您尝试禁用浏览器BACK按钮,则根本无法实现。如果网站可以搞乱你的浏览器功能,你会喜欢它吗?

答案 4 :(得分:0)

你有两个选择。

  1. 使用发布请求加载页面,这将阻止用户使用后退按钮,因为您可以在服务器端捕获重新加载。 (你需要用js包装所有的超链接,所以有点工作,解决方案非常难看。)

  2. 使用DOM将内容加载到页面中。历史将无法回溯它。 (或者我错了: - |)

  3. 更清楚地描述您的问题,您可能需要更好的解决方案。

答案 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');
    }
}