gpt4 book ai didi

javascript - 通过 JavaScript 可靠地更改浏览器历史记录中的页面标题

转载 作者:可可西里 更新时间:2023-11-01 02:08:52 33 4
gpt4 key购买 nike

是否可以在页面加载后通过 JavaScript 更改浏览器历史记录中的页面标题?应该是跨浏览器(当然)并且在不支持 HTML5 History API 的浏览器上工作,我的主要目标浏览器是 Chrome。

我尝试了多种方法,但似乎没有一种方法可靠。这是我最后尝试过的 ( history.js ):

<html>
<head>
<title>Standard title</title>
<script src="https://rawgit.com/browserstate/history.js/master/scripts/bundled-uncompressed/html4%2Bhtml5/native.history.js"></script>
</head>
<body>
<script>
window.setTimeout(function(){
document.title = "My custom title";
History.replaceState({}, "My custom title", window.location.href);
}, 3000);
</script>
</body>
</html>

如果我在页面加载后 3 秒内在 Chrom 中加载历史页面,我会看到 Standard title , 3 秒后我得到 My custom title .

为什么我需要这个:我有一个运行在不同环境(开发、测试、生产)上的纯 JavaScript 应用程序 (Angular 1)。我想显示类似 MyApp (<environmentName>) 的标题,但我不想为每个环境构建我的应用程序的单独版本。相反,应用程序可以通过 AJAX 从后端请求环境信息并更新页面标题。所有这些工作正常(页面标题得到更新),但浏览器历史记录仍然显示“标准”标题。

有没有办法改变浏览器历史记录中的页面标题?

最佳答案

简答:似乎无法在 Chrome 中为同一网址保留不同的标题记录。

免责声明:我只是偶然发现了这个问题,之前没有这方面的经验。尽管如此,这个问题是如此清晰和有趣,以至于我忍不住做了一些实验:

首先,我同意历史选项卡中显示的历史记录(即页面标题)不是那么可靠(可能是错误或缓存)。

所以我决定查看 Chrome 历史记录的数据库文件,例如,使用 DB Browser for SQLite .

令我惊讶的是,Chrome 历史记录只为每个 url 保留一个版本(最新)的标题。当我执行 History.replaceState({}, "My custom title", window.location.href); 时,标题会在数据库中更新。

但是,@Bekim 的方法不会更改数据库中的标题。

关于javascript - 通过 JavaScript 可靠地更改浏览器历史记录中的页面标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40888106/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com