在ajax回调函数里面使用(直接使用属于浏览器行为,所以被阻止打开新窗口);
safari 中没办法在回调函数里面执行, 原因是safari的安全机制将其阻挡了
那么如果你有这样的需求(或者类似的),通过ajax 发送请求到服务器端,等待请求响应成功之后,根据从服务器端响应得到的数据,打开一个窗口显示给用户,在safari上是没办法直接一个搞定的( 浏览器没问题, IE, firefox, chrome).
当为用户触发事件内部或者加载时,不会被拦截,一旦将弹出代码移动到ajax或者一段异步代码内部,马上就出现被拦截的表现了
那么 在safari 中 只有当用户触发事件之后才能被调用成功的,怎么解决这个问题呢? 很简单, 绕过这个该死的安全机制,在你调用ajax请求之前,打开这个窗口, 然后在回调函数里面修改新打开窗口的location, 这样就解决了。
解决办法:
1、苹果系统设置,偏好设置->安全性,去掉阻止弹窗的复选框就ok了。(这是网上看到的方法,没试过)
2、
('[name=gotoAccountSet]').unbind('click').click(function(){
var sel = ('select option:selected');
var id = ("id");
var name = ();
var winRef = ("URL", "_blank");//打开一个新的页面
(
'accountSet/',
{id:id},
function(data){
var ro = (data);
if(){
function loc(){
var url = 'http://'++'./'+name+'/';
= url;//改变页面的 location
}
setTimeout(loc(),800);//这个等待很重要,如果不等待的话将无法实现
}
}
)
});