原因:最开始的时候我以为是苹果设备的原因 因为使用手机ipad都不能打开,后来查了资料说是浏览器的原因找到了如下的解释以及解决方案
移动端safari浏览器无法通过window.open在新标签打开链接。大部分现代的浏览器(Chome/Firefox/IE 10+/Safari)都默认开启了组织弹出窗口的策略,原因是window.open被广告商所滥用,严重影响用户的使用。这就意味着,要想在新标签打开链接,只能通过用户点击a标签或者关闭浏览器的防止弹窗功能。
Safari中无法open新窗口,原因是Safari的安全机制将其阻止,一些异步操作,比如ajax回调里面执行window.open就会失效,原因是代码自己自动执行的,被IOS的安全机制拦截!
因为我的url就是请求获取得来的所以Safari根本打不开,火狐也打不开
解决方案:把打开链接的操作放到setTimeout里运行即可,因为setTimeout是在主线程运行的,因此该操作不会被浏览器认定为代码操作的,所以不会拦截。
直接放到setTimeout里面就可以了如下
setTimeout(() => window.open( url, ‘_blank’))