window.open在Safari浏览器中不能打开的如何解决方法

什么事情都可以拖一拖,没必要那么着急,事缓则圆。努力去做自己该做的,但是不要期待回报,不是付出了就会有回报的,做了就不要后悔,不做才后悔。

在苹果系统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其它相关文章!

您可能有感兴趣的文章
javascript请求servlet实现ajax示例(分享)

JavaScript操作表单_动力节点Java学院整理

纯javascript的ajax实现php异步提交表单的简单实例

JavaScript实现Ajax总结

初步了解JavaScript,Ajax,jQuery,并比较三者关系