是否支持Android [removed].replace或任何等效?(Does Android s

2019-07-20 21:57发布

如此看来,Android的浏览器不正确地实现window.location.replace

在大多数浏览器中调用window.location.replace将替换传递给它的URL的URL。

当用户浏览其他地方,那么点击回来,他们将返回到传递给URL window.location.replace ,而不是他们在之前的URL window.location.replace被调用。

Android浏览器似乎并不正确地实现这一点。

在Android浏览器,用户将被引导回原来网址 ,而不是一个传递给window.location.replace

您可以测试自己这一点在这里 。

那么,有没有在Android的重新书写历史的任何替代办法? 或将我只是生活在没有该功能,为Android用户?

Answer 1:

我有同样的问题,并结束了类似于克里斯建议代码,但我改变了if语句使用Modernizr的的特征检测。 如果你不使用Modernizr的代码将是这个样子:

if(!!(window.history && history.replaceState)){
   window.history.replaceState({}, document.title, base + fragment);
} else {
   location.replace(base + fragment);
}

除非你有设备检测一个具体的理由,是优选的特征检测,因为它基本上支持所有设备,甚至是未来的。



Answer 2:

为了让所有的工作/大多数移动平台看看这个链接 。

显示如何处理重定向为Android,iPad和iPhone。

Android使用document.location ,而iOS的支持window.location.replace



Answer 3:

将这项工作?

document.location.href = 'http://example.com/somePage.html';


Answer 4:

你可以尝试使用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);
      }


文章来源: Does Android support window.location.replace or any equivalent?