我有一个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.com
或einzelstueck-shop.com/
,我成功重定向到/home
,标题更改为Home - Einzelstück
一小段时间。但随后它将document.title
更改为当前网址。我不明白为什么。
我删除了所有其他代码,但这仍然会发生。应用程序中没有其他位置可以更改document.title。这仅在初始页面加载时发生。使用导航或使用路径访问网站,例如einzelstueck-shop.com/home
或einzelstueck-shop.com/ringe
一切正常。
答案 0 :(得分:0)
我通过放弃HTML History API并使用history.js
解决了这个问题通常情况下,我会继续使用HTML5版本,但由于history.js尽可能地遵循HTML5 API并修复了其他问题(例如IE9),我还是试了一下。
我的问题可能会在没有人注意的情况下修复一些Chrome更新。