【问题标题】:How to clear browsing history using JavaScript?如何使用 JavaScript 清除浏览历史记录?
【发布时间】:2013-12-01 09:53:53
【问题描述】:

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

【问题讨论】:

  • 不可能...
  • window.location.replace() ???
  • @Jai,查看我的更新。它并没有真正回答他的问题,除非他问错了问题。
  • 你的问题很混乱。您无法清除缓存,但是,您可以使用 location.replace() 在浏览器历史记录中添加您的网站页面之一
  • OP 要求的是“禁用后退按钮”吗?提出的大多数答案似乎都集中在这一点上-我不太确定它是否与 OP Q 的每个标题的“清除浏览历史记录”一致...即,如果我重定向网页并选择选项、隐私/安全、清除浏览历史记录-将全部物品已经清零了?如果按 alt+h,这个窗口会显示 0 条记录吗?嗯……

标签: javascript browser-history


【解决方案1】:

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

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

HTML:

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

【讨论】:

  • 不是window.location.replace()吗?
  • 他们不一样吗?
  • @Qantas94Heavy 你们都工作,但是:stackoverflow.com/questions/7857878/…
  • 这些行放在哪里?脚本内部?
  • 想法是点击链接,你可以调用一个javascript函数。在该函数中,您可以替换要导航的 url。即 document.location.replace('url here');它清除当前历史记录并导航。
【解决方案2】:

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

对于顶级页面,您可以在浏览器的后退和前进按钮旁边的下拉菜单中查看会话历史记录中的页面列表,可通过 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.htmlc.html。在 b.html 中,我们使用 location.replace(c.html) 方法从 b.html 导航到 c.html。最后,我们转到c.html*,如果我们在浏览器中点击返回按钮,我们会跳转到**a.html

原来如此!希望对您有所帮助。

【讨论】:

    【解决方案3】:

    没有插件就无法清除用户历史记录。而且从开发者的角度来看,这也不是问题,清除历史记录是用户的负担。

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

    【讨论】:

    • 这是一个有用的答案吗? 1) 安全始终是开发人员关心的问题,尤其是在给出的示例中。 2)大致可以一次解决一个问题,如此处其他答案中所述。 3) 开发者可能无法阻止恶意登录的嗅探器,但他们应该尽最大努力清理已注销或继续并忘记注销的用户。
    • 可以使用 Chrome 的history API 清除浏览历史记录,但这只能在浏览器扩展中使用。
    【解决方案4】:

    ,那将是一个安全问题。


    但是,可以在 Google chrome 扩展程序中清除 JavaScript 中的历史记录。 chrome.history.deleteAll()
    采用
    window.location.replace('pageName.html');
    

    类似于 HTTP 重定向的行为

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

    【讨论】:

    • @DineshKumar 404 页面未找到。
    • 清除历史记录是一个安全问题。一般来说,清除历史记录会带来一些不便。 (在闪烁标记和中断因素中的弹出窗口之间的某个位置)
    【解决方案5】:

    禁用返回按钮的返回功能:

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

    【讨论】:

    • 对我来说工作正常,但由于某些原因不能在 chrome 上运行谢谢
    【解决方案6】:

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

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

    <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 上使用相同的过程。

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

    【讨论】:

      【解决方案7】:

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

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

      【讨论】:

      • “你发布的链接 [...]” “你”是谁?
      • @JackMiller “你”是网站/网络应用程序的开发者。
      猜你喜欢
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      相关资源
      最近更新 更多