lex*_*ore 12 javascript google-chrome browser-history angularjs
是否可以在加载页面后通过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>
Run Code Online (Sandbox Code Playgroud)
如果我在页面加载Standard title后3秒内在Chrom中加载历史页面,我看到,在3秒后我得到了My custom title.
为什么我需要这个:我有一个只适用于JavaScript的应用程序(Angular 1),它运行在不同的环境(开发,测试,生产)上.我想显示一个标题MyApp (<environmentName>),但我不想为每个环境构建我的应用程序的单独版本.相反,应用程序可以通过AJAX从后端请求环境信息并更新页面标题.所有这一切都很好(页面标题得到更新),但浏览器历史记录仍显示"标准"标题.
有没有办法在浏览器历史记录中更改页面的标题?
简短的回答:似乎没有办法在 Chrome 中为同一个 url 保留不同的标题记录。
免责声明:我只是偶然发现这个问题并且之前没有相关经验。尽管如此,这个问题是如此清晰和有趣,我忍不住做了一些实验:
首先,我同意历史选项卡中显示的历史记录(即页面标题)不太可靠(可能是错误或缓存)。
因此,我决定查看数据库文件以获取 Chrome 历史记录,例如使用DB Browser for SQLite。
令我惊讶的是,Chrome 历史记录只为每个网址保留一个版本(最新的)标题。当我这样做时History.replaceState({}, "My custom title", window.location.href);,标题确实会在数据库中更新。
但是,@Bekim 的方法不会更改数据库中的标题。
| 归档时间: |
|
| 查看次数: |
2136 次 |
| 最近记录: |