在苹果系统Safari浏览器中,由于安全机制的原因,无法在JS的回调函数中使用 window.open() 方法。但如果我们要强制使用 window.open() 该如何做呢?下面就说一下绕过此安全机制的方法。
解决 window.open 在 Safari苹果浏览器无法打开的的问题
1、绕过Safari苹果浏览器的安全机制
绕过Safari苹果浏览器的安全机制其实很简单,在调用ajax请求之前,通过 window.open 打开窗口, 然后在回调函数里面修改打开窗口的 location 为目地址即可!
例:
<script> winOpen = window.open("", "_blank"); //提前打开一个窗口 $.ajax({ type:'POST', url: '', data: {}, dataType:'json', success:function(res){ setTimeout(function() { winOpen.location = 'http://feiniaomy.com'; //修改为要打开的地址 }, 1000); }, error:function(){ } }); </script>
注意:ajax 回调函数中,需要将修改 location 地址的代码放到 setTimeout 方法中,并延时 1000 毫秒左右。这样可以防止window.open会中断正在执行的进程
2、让用户点击的方法
此方法比上面的方法多出了一个步骤,只需要在回调的函数中将链接写入到页面中,让用户点击即可,这个方法是百分之百不会被拦截的!
例:
<a rel="nofollow" href="" id="mochu">这是一个链接</a> <script> $.ajax({ type:'POST', url: '', data: {}, dataType:'json', success:function(res){ $('#mochu').attr('href',res.url); }, error:function(){ } }); </script>
以上就是window.open在Safari浏览器中不能打开的如何解决方法。生活的可怕之处就是在这里,有些人可以安于现在的生活,不自卑不敷衍,也能够很好淡然地生活下去;有些人想要去远方,想要生活剧烈,不疯魔不成活,虽然累倒也活得轰轰烈烈。可尴尬就尴尬在你活在另一种生活里——不上不下的生活。更多关于window.open在Safari浏览器中不能打开的如何解决方法请关注haodaima.com其它相关文章!