页面加载后,是否可以通过JavaScript更改浏览器历史记录中的页面标题?应该是跨浏览器(当然),并且适用于不支持HTML5历史记录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秒内在Chrome中加载历史页面,我会看到“标准标题”,3秒后我会得到“我的自定义标题”。
为什么需要这个:我有一个仅使用JavaScript的应用程序(Angular 1),可以在不同的环境(开发,测试,生产)上运行。我想显示一个标题,例如
MyApp (<environmentName>)
,但我不想为每个环境构建单独的应用程序版本。相反,应用程序可以通过AJAX从后端请求环境信息并更新页面的标题。所有这些都很好(页面标题得到更新),但浏览器历史仍然显示“标准”标题。有没有办法在浏览器历史中更改页面的标题?
document.title
就能让它起作用。然而,我现在无法再次重现这种工作行为,也不确定它依赖于什么要求。 - John Weisz