【问题标题】:How to Enable/Disable browser history through js如何通过js启用/禁用浏览器历史记录
【发布时间】:2023-04-08 14:54:01
【问题描述】:

我们可以通过 java 脚本代码启用或禁用浏览器历史记录吗? 如果可能,请告诉我执行此操作的机制。

【问题讨论】:

标签: javascript web-applications browser-history


【解决方案1】:

我认为这是不可能的。

你可以尝试使用document.location.replace()它用于清除历史记录中的最后一个条目并将其替换为新url的地址。

【讨论】:

  • 根据MDN window.location.replace() 确实“用提供的URL替换当前资源”。 Safari (14.0.3) 和 Chrome (90) 执行此操作。但是,Firefox (88) 确实保留了历史记录中的原始条目。
【解决方案2】:

如果 url 或 url-fragment 发生变化,条目将被添加到浏览器历史记录中。意味着,浏览器将显示导航按钮。当用户单击它们时,地址栏中会显示上一个 url 或片段。您的应用程序可以忽略它做一些事情。如果您正在寻找一种没有历史记录和导航链接的单页应用行为,那么您不应该更改初始 url 或其中的一部分。

【讨论】:

    【解决方案3】:

    这篇文章可能会有所帮助: How to clear browsers (IE, Firefox, Opera, Chrome) history using JavaScript or Java except from browser itself?

    像 YUI 这样的 JS 框架建议我们不能删除历史记录项,但是您可以使用历史记录做一些其他的事情。摘自 YUI 文档 -

    虽然无法从浏览器历史记录中删除条目,但可以创建新条目(或替换当前条目)并删除先前设置的一个或多个状态值。为此,请将一个或多个值添加或替换为 null 或 undefined。

    更多信息请参考http://yuilibrary.com/yui/docs/history/

    【讨论】:

      【解决方案4】:

      如果您需要启用支持历史记录的浏览器,可以使用 Modernizr 插件,不支持的历史记录浏览器将被禁用。

       if (Modernizr.history) {
              //Code goes here that works if it's HTML 5 Browser with .history support? 
             //  I know some HTML5     browsers deal with .history oddly (read buggy) so what
             //   happens in      those cases?
           } else {
            // disable code
         }
      

      查看此链接https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-12
        • 2010-09-08
        相关资源
        最近更新 更多