如何使用JavaScript清除浏览历史记录?

时间:2013-11-18 09:43:18

标签: javascript browser-history

我正在做一个简单的项目,让我们采取高度安全的网站。我有5个不同的JSP页面。如果我从第一个JSP页面开始,它将重定向到第二个JSP页面,依此类推。同时,它不应该在我的浏览器历史记录中存储这些页面。 如何使用JavaScript清除那些浏览历史记录?

7 个答案:

答案 0 :(得分:23)

您可以尝试使用document.location.replace()吗?它用于清除历史记录中的最后一个条目,并将其替换为新网址的地址。 replace()从文档历史记录中删除当前文档的URL,这意味着无法使用“后退”按钮导航回原始文档。

<script type="text/javascript">
    function Navigate(){   
         window.location.replace('your link');
        return false;
    }
   </script>

HTML:

   <button onclick="Navigate()">Replace document</button>

答案 1 :(得分:10)

如果没有插件,则无法清除用户历史记录。从开发人员的角度来看,这也不是一个问题,清除历史是用户的负担。

有关信息,请参阅How to clear browsers (IE, Firefox, Opera, Chrome) history using JavaScript or Java except from browser itself?

答案 2 :(得分:10)

正如MDN Window.history()所描述的那样:

  

对于顶级页面,您可以在后退和前进按钮旁边的浏览器下拉菜单中查看会话历史记录中的页面列表,可通过历史记录对象访问。

     

出于安全原因,History对象不允许非特权代码访问会话历史记录中其他页面的URL,但它允许它导航会话历史记录。

     

无法清除会话历史记录或禁用非特权代码的后退/前进导航。最接近的解决方案是location.replace()方法,该方法用提供的URL替换会话历史记录的当前项。

因此没有Javascript方法来清除会话历史记录,相反,如果要阻止导航回某个页面,可以使用location.replace()方法,并将页面链接作为参数传递,这将是不要将页面推送到浏览器的会话历史列表。例如,有三个页面:

<强> a.html:

<!doctype html>
<html>
    <head>
        <title>a.html page</title>
    <meta charset="utf-8">
    </head>
    <body>
         <p>This is <code style="color:red">a.html</code> page ! Go to <a href="b.html">b.html</a> page !</p>        
    </body>
 </html>

<强> b.html:

<!doctype html>
<html>
    <head>
    <title>b.html page</title>
    <meta charset="utf-8">
</head>
<body>
    <p>This is <code style="color:red">b.html</code> page ! Go to <a id="jumper" href="c.html">c.html</a> page !</p>

    <script type="text/javascript">
        var jumper = document.getElementById("jumper");
        jumper.onclick = function(event) {
            var e = event || window.event ;
            if(e.preventDefault) {
                e.preventDefault();
            } else {
                e.returnValue = true ;
            }
            location.replace(this.href);
            jumper = null;
        }
    </script>
</body>

c.html:

<!doctype html>
<html>
<head>
    <title>c.html page</title>
    <meta charset="utf-8">
</head>
<body>
    <p>This is <code style="color:red">c.html</code> page</p>
</body>
</html>

使用href链接,我们可以从 a.html 导航到 b.html c.html 。在 b.html 中,我们使用location.replace(c.html)方法从 b.html 导航到 c.html 。最后,我们转到 c.html *,如果我们点击浏览器中的后退按钮,我们会跳转到** a.html

就是这样!希望它有所帮助。

答案 3 :(得分:3)

,这将是一个安全问题。

<小时/> 但是,可以在Google Chrome扩展程序中清除JavaScript中的历史记录。 chrome.history.deleteAll()
使用

window.location.replace('pageName.html');
  

与HTTP重定向类似的行为

阅读How to redirect to another webpage in JavaScript/jQuery?

答案 4 :(得分:1)

您无法清除浏览器历史记录。它属于用户,而不是开发人员。另请查看MDN documentation

更新:您发布的链接实际上并未清除您的浏览器历史记录。它只是阻止使用后退按钮。

答案 5 :(得分:0)

好的。这是一个古老的历史,但是也许我的解决方案可能对您或其他开发人员有用。 如果我不希望用户在页面中按返回键(例如说从页面A调用的页面B)并返回上一页(页面A),则执行下一步:

首先,在A页上,而不是使用window.location.hrefwindow.location.replace来调用下一页,我使用两个命令进行呼叫:A页上的window.openwindow.close示例:

<a href="#"
onclick="window.open('B.htm','B','height=768,width=1024,top=0,left=0,menubar=0,
         toolbar=0,location=0,directories=0,scrollbars=1,status=0');
         window.open('','_parent','');
         window.close();">
      Page B</a>;

打开的所有修饰符仅用于构成结果页面。这将打开一个没有使用返回键的新窗口(popWindow),并关闭呼叫者页面(A页)

第二:如果希望此页面执行相同的操作,则可以在页面B上使用相同的过程。

好吧。这需要用户接受,您可以打开弹出窗口,但是在受控系统中,就像您正在为工作或客户端编程页面一样,很容易向用户推荐。只需接受该站点为可信站点即可。

答案 6 :(得分:0)

禁用后退按钮的后退功能:

window.addEventListener('popstate', function (event) {
  history.pushState(null, document.title, location.href);
});