我刚刚在 Google Chrome 中打开了一个带有少量基本标签(如 html、body、head 等)的空白 HTML 页面,并尝试在控制台中执行以下命令:
history.pushState(null, 'my test title', '/test/url');
历史事件工作正常,但页面标题保持不变。可以吗?我应该每次都手动更改吗?如果我应该,为什么 pushState() 方法中有这样的参数,如标题?
我刚刚在 Google Chrome 中打开了一个带有少量基本标签(如 html、body、head 等)的空白 HTML 页面,并尝试在控制台中执行以下命令:
history.pushState(null, 'my test title', '/test/url');
历史事件工作正常,但页面标题保持不变。可以吗?我应该每次都手动更改吗?如果我应该,为什么 pushState() 方法中有这样的参数,如标题?
当前的浏览器似乎不支持 pushState 标题属性。您可以通过在 JS 中设置来轻松实现相同的目标。
document.title = "This is the new page title.";
document.title
如果您想要良好的 SEO,不建议使用设置标题。
您可能需要考虑使用History.js
History.js在所有浏览器中优雅地支持 HTML5 History/State API(pushState、replaceState、onPopState)。包括对数据、标题、replaceState 的持续支持。支持 jQuery、MooTools 和原型。
当您使用 history.pushState 时,以下代码将更改页面标题
$(document).prop('title','your page title');
它也与 IE 一起使用。
目前,所有现代浏览器都使用 history.push() 更改标题,但您必须更改 URL。如果您只添加“#locationhash”,它不会更改标题,这是有道理的。