window.open和window.location.href的区别

1,157 阅读1分钟

背景:开发的h5页面 由于业务需求嵌入到app中,调整页面时ios系统无法跳转页面。 测试发现 安卓手机正常跳转url,苹果手机无法跳转。

原因:由于苹果手机浏览器拦截了新增窗口,无法正常跳转页面

措施:苹果系统改为域名重定向,跳转页面正常。

window.open 用来打开新窗口 
window.location 用来替换当前页,也就是重新定位当前页 
    可以用以下来个实例来测试一下。 
<input type="button" value="新窗口打开" onclick="window.open('https://juejin.cn/creator/home')"> 
<input type="button" value="当前页打开" onclick="window.location='https://juejin.cn/creator/home'"> 

判断设备型号代码:

    if (sUserAgent.indexOf('Android') > -1 || sUserAgent.indexOf('iPhone') > -1 || sUserAgent.indexOf('iPad') > -1 ||
      sUserAgent.indexOf('iPod') > -1 || sUserAgent.indexOf('Symbian') > -1) {
          alert("移动端")
      } else {
        alert("PC端")
    }

扩展:window.location或window.open如何指定target?

这是一个经常遇到的问题,特别是在用frame框架的时候

解决办法:

window.location 改为 top.location 即可在顶部链接到指定页 或 window.open("你的网址","_top");

window.open 用来打开新窗口 
window.location 用来替换当前页,也就是重新定位当前页 

用户不能改变document.location(因为这是当前显示文档的位置)。 
window.location本身也是一个对象。 

但是,可以用window.location改变当前文档 (用其它文档取代当前文档),而document.location不是对象。 
服务器重定向后有可能使document.url变动,但window.location.href指的永远是访问该网页时用的URL. 
大多数情况下,document.location和location.href是相同的,但是,当存在服务器重定向时,document.location包含的是已经装载的URL,而location.href包含的则是原始请求的文档的URL.

总结

window.open()是可以在一个网站上打开另外的一个网站的地址 
window.location()是只能在一个网站中打开本网站的网页