history.pushState不会更改页面标题

ava*_*sin 33 html5-history

我刚刚在谷歌浏览器中打开了一个空白的HTML页面,其中包含一些基本标签(如html,body,head等),并尝试在控制台中执行以下命令:

history.pushState(null, 'my test title', '/test/url');
Run Code Online (Sandbox Code Playgroud)

历史事件工作正常,但页面标题保持不变.可以吗?我应该每次都手动更换吗?如果我应该,为什么像title这样的pushState()方法中有这样的参数?

Kir*_*ill 39

目前的浏览器似乎不支持pushState title属性.您可以通过在JS中设置它来轻松实现相同的功能.

document.title = "This is the new page title.";
Run Code Online (Sandbox Code Playgroud)

  • 如果人们因为几个原因抱怨它不起作用,那么这应该与pushState和replaceState一起使用.更具体地说,这应该在popstate侦听器中运行,以确保document.title相应地更新. (9认同)
  • @Kirill,这是如何获得10票的?这不起作用.**不起作用!**所有历史记录条目最终都会有相同的标题,请参阅http://stackoverflow.com/q/26324990/632951 (7认同)
  • 点击后退按钮怎么样?它保持不变. (3认同)
  • @RahulDesai:通常,使用标题/历史记录的人这样做是为了性能优化(外壳架构、无限分页等)。此类页面*已经*对搜索引擎不可见,因此此时担心 SEO 毫无意义。通常,通过历史 API 生成的每个 URL 也将是具有适当标题的有效独立 URL;document.title 仅在模拟导航时使用以避免整页刷新。 (2认同)

小智 6

使用history.pushState时,以下代码将更改页面标题

$(document).prop('title','your page title');
Run Code Online (Sandbox Code Playgroud)

它也在与IE合作.

  • 不必要的jQuery使用 (10认同)
  • 因为history.push和`document.title ='不需要jQuery你的页面标题';`完美地完成了这项工作(并且本质上是jQuery在内部做的) (4认同)

Rah*_*sai 5

document.title如果您想要良好的SEO,不建议使用标题.

History.js在所有浏览器中优雅地支持HTML5历史/状态API(pushState,replaceState,onPopState).包括对数据,标题,replaceState的持续支持.支持jQuery,MooTools和Prototype.

演示

资源

  • 搜索引擎优化与javascript有什么关系?我的印象是pushState只应该用于避免在页面中触发JS时重新加载. (3认同)
  • 它对我来说确实更好......解决了一堆问题. (2认同)
  • History.js 确实是一个很大的努力和一个很好的项目,但不幸的是没有开发,甚至没有维护多年。它有很多问题和错误。我强烈建议不要使用它,除非 ** 真的** 需要广泛的浏览器支持(现在 IMO 的相关性越来越低)。 (2认同)
  • History 做同样的事情……如果没有,则尝试更改标题元素,然后使用 DOM 设置它。 (2认同)