如此看来,Android的浏览器不正确地实现window.location.replace
。
在大多数浏览器中调用window.location.replace
将替换传递给它的URL的URL。
当用户浏览其他地方,那么点击回来,他们将返回到传递给URL window.location.replace
,而不是他们在之前的URL window.location.replace
被调用。
Android浏览器似乎并不正确地实现这一点。
在Android浏览器,用户将被引导回原来的网址 ,而不是一个传递给window.location.replace
。
您可以测试自己这一点在这里 。
那么,有没有在Android的重新书写历史的任何替代办法? 或将我只是生活在没有该功能,为Android用户?
我有同样的问题,并结束了类似于克里斯建议代码,但我改变了if语句使用Modernizr的的特征检测。 如果你不使用Modernizr的代码将是这个样子:
if(!!(window.history && history.replaceState)){
window.history.replaceState({}, document.title, base + fragment);
} else {
location.replace(base + fragment);
}
除非你有设备检测一个具体的理由,是优选的特征检测,因为它基本上支持所有设备,甚至是未来的。
为了让所有的工作/大多数移动平台看看这个链接 。
显示如何处理重定向为Android,iPad和iPhone。
Android使用document.location
,而iOS的支持window.location.replace
将这项工作?
document.location.href = 'http://example.com/somePage.html';
你可以尝试使用replaceState法历史上的window.history
if (((navigator.userAgent.toLowerCase().indexOf('mozilla/5.0') > -1 && navigator.userAgent.toLowerCase().indexOf('android ') > -1 && navigator.userAgent.toLowerCase().indexOf('applewebkit') > -1) && !(navigator.userAgent.toLowerCase().indexOf('chrome') > -1))) {
window.history.replaceState({}, document.title, base + fragment);
} else {
location.replace(base + fragment);
}