如何设置浏览器为history.pushState显示的条目的标题
How to set the title of the entry that the browser displays for history.pushState?
我使用history.pushState( stateObject, title, url )
将新条目推送到浏览器的历史堆栈中。尽管第二个参数title
的名称不同,但它不会设置浏览器历史记录中显示的条目的标题。如果我理解正确的话,title
是为将来使用而保留的,目前所有浏览器都会忽略它。在这里通过''
应该是安全的,我的研究结果支持这一点。
因此,我想知道如何设置用户将在其历史记录中看到的标签,我认为document.title
可以完成这项工作。所以我的代码看起来像这个
var myTitle = /* code to generate title here */
var myURL = /* code to generate url here */
var myState = /* code to generate realizable state object here */
document.title = myTitle;
history.pushState( myState, '', myURL ); // 2nd parameter can also be myTitle; this has no effect on all major browsers
然而,它并没有如预期的那样发挥作用。更确切地说,我遇到了一个奇怪的失误。似乎pushState
不是使用新的document.title
而是使用先前的标题来创建新的历史条目。我想问题是DOM不会立即更新,而是只有在JS离开当前调用堆栈之后才更新。因此CCD_ 8在CCD_。
W3C的HTML5规范第5.5.2章第8点下面的注释说:
title
纯粹是咨询性的。用户代理可能会在用户界面中使用标题。
这是所有主要浏览器实现的行为。然而,UI和新标题只有在JS函数返回后才会更新。
有什么解决方案吗?
当活动历史记录条目发生更改时,将触发popstate事件。如果正在激活的历史条目是由对history.pushState((的调用创建的,或者受到对histors.replaceState((调用的影响,则popstate事件的state属性包含历史条目的state对象的副本。
window.addEventListener('popstate', function(e) {
var character = e.state;
document.title = "Title | ";
});
相关文章:
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何在生成下载文件时显示加载动画
- React重新渲染但未显示正确的组件
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 音频控件在mouseover上显示,在mouseout上淡出
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 显示5秒后隐藏潜水
- 画廊图像未显示
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 高亮显示时编辑文本大小和颜色
- 有时数据是't显示在浏览器中
- 当鼠标悬停在文本中的单词上时显示警报
- 阻止使用history.pushState显示URL
- 如何设置浏览器为history.pushState显示的条目的标题