【问题标题】:weird quirk: pushState and/or hashChange clear the title from the browser tab奇怪的怪癖:pushState 和/或 hashChange 从浏览器选项卡中清除标题
【发布时间】:2012-07-19 23:55:17
【问题描述】:

我有一个 ASP.NET MVC 3 应用程序,我将它构建为一个单页应用程序,它遵循 BigShelf SPA 中的示例,使用 Knockout.js 和 History.js 来处理用户交互和导航。一切正常,但我注意到一个奇怪的怪癖,标题显示在浏览器选项卡中:

  1. 当应用程序加载时,浏览器标签标题正确显示<title>标签的内容,即My Single Page App
  2. 当History.js 使用pushStatehashChange(取决于浏览器的能力)修改URL 时,浏览器的标签标题设置为新修改的URL,即浏览器标签现在显示为@ 987654326@

同样,功能上没有问题,但对我来说很奇怪标签标题也被修改了。这发生在我测试过的所有浏览器(IE6+、FF、Chrome、Safari)中。

他们是否无论如何要改变或控制这种行为?

【问题讨论】:

  • 这不是该库的默认行为,它也会更改 document.title 吗?您需要设置一个,否则将使用 URL。
  • @Bergi 感谢您的提示。你是对的,事实证明 SPA 中使用的 History.js 的包装器将标题设置为 URL。

标签: javascript pushstate history.js hashchange


【解决方案1】:

根据 Bergi 的评论,我仔细研究了 History.js 和 BigShelf SPA 示例中提供的包装器。

事实证明,History.js 提供了一个方法,该方法接受应该显示哪个标题的参数history.pushState(params, title, url)。 SPA 中的包装器将 url 作为标题传递。我将其更改为我的应用程序的名称并解决了“问题”。

【讨论】:

    猜你喜欢
    • 2011-12-19
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 2014-08-27
    • 2011-12-08
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    相关资源
    最近更新 更多