Chrome会将document.title更改为URL

时间:2014-04-03 08:28:31

标签: google-chrome html5-history

我有一个AJAX驱动的网站/ webapp,并使用HTML5的历史API来控制浏览器URL,后台按钮等。

网址为einzelstueck-shop.com

在初始页面加载时,我确定通过AJAX获取主页部分的URL路径。 这很简单:

if(!target) {
    target = removeSlash(window.location.pathname);
}

if(target == '' || target == '/') {
    target = 'home';
}

然后我做我的AJAX的东西,如果成功,我这样做:

// change doc title & history
var title = $('.slide-button[data-nav-target="'+data.target+'"]').attr('data-nav-title');
console.log(title);
document.title = title + ' - Einzelstück';
window.history.pushState("", document.title, data.target);
console.log('History code is executed, current document.title is: ' + document.title);

现在,title变量是我为触发导航更改的所有元素提供的数据属性的值。 title 100%正确。我输入了一个console.log来显示它。 data.target是从AJAX调用传递的原始target

一切都在FF和IE中运行。在Chrome中,如果您在没有路径的情况下访问该网站,例如 einzelstueck-shop.comeinzelstueck-shop.com/,我成功重定向到/home,标题更改为Home - Einzelstück一小段时间。但随后它将document.title更改为当前网址。我不明白为什么。

我删除了所有其他代码,但这仍然会发生。应用程序中没有其他位置可以更改document.title。这仅在初始页面加载时发生。使用导航或使用路径访问网站,例如einzelstueck-shop.com/homeeinzelstueck-shop.com/ringe一切正常。

1 个答案:

答案 0 :(得分:0)

我通过放弃HTML History API并使用history.js

解决了这个问题

通常情况下,我会继续使用HTML5版本,但由于history.js尽可能地遵循HTML5 API并修复了其他问题(例如IE9),我还是试了一下。

我的问题可能会在没有人注意的情况下修复一些Chrome更新。