今天在做浏览器兼容问题是,发现safari window.open 无法实现的问题,google了一下,找到了。解决方案!
转载自:http://blog.csdn.net/wgrzhuaq/article/details/7821725
先说下问题是什么吧: safari 中没办法在回调函数里面执行window.open, 原因是safari的安全机制将其阻挡了(具体的原因可能需要你自己深入研究)..
那么如果你有这样的需求(或者类似的),通过ajax 发送请求到服务器端,等待请求响应成功之后,根据从服务器端响应得到的数据,打开一个窗口显示给用户,在safari上是没办法直接一个window.open搞定的( 浏览器没问题, IE, firefox, chrome).
那么window.open 在safari 中 只有当用户触发事件之后才能被调用成功的,怎么解决这个问题呢? 很简单, 绕过这个该死的安全机制,在你调用ajax请求之前,打开这个窗口, 然后在回调函数里面修改新打开窗口的location, 这样就解决了。这个解决方案是我前两天从国外一位兄台的博客上找到的,相信国内的某些兄弟可能会用到,所以在此发出来,希望能对你有所帮助。
简单示例代码如下(假设应用jquery):
pg.find('[name=gotoAccountSet]').unbind('click').click(function(){
var sel = pg.find('select option:selected');
var id = sel.attr("id");
var name = sel.html();
var winRef = window.open("", "_blank");//打开一个新的页面
App.post('accountSet/getServerName.do',{id:id},function(data){
var ro = mac.eval(data);
if(ro.success){
function loc(){
var ll = 'http://'+ro.data.info+'.teenydata.com/'+name+'/index.jsp';
winRef.location = ll;//改变页面的 location
}
setTimeout(loc(),800);//这个等待很重要,如果不等待的话将无法实现
}
})
});
如果实在需要弹出网页,可以用window.showModalDialog()
如果需要另起窗口打开用<a href="地址" target="_blank"></a>也能打开新窗口。
分享到:
相关推荐
window.open()对于各浏览器兼容情况
一、基本语法: window.open(pageURL,name,parameters) 其中: pageURL 为子窗口路径 name 为子窗口名字 parameters 为窗口参数(各参数用逗号分隔) 二、示例 代码如下: [removed] window.open(‘page.html’,’new...
window.close();... window.open(”,’_self’); window.close(); firefox IE7,Opera, chrome,safari Close 3 window.open(”,’_self’); window.close(); firefox IE7,Opera, chrome,sa
Chrome : window.open(“URL”, “_blank”) , 带有目标 _blank 的超链接 Firefox: window.open(“URL”, “_blank”) , 带有目标 _blank 的超链接 Safari:与目标 _self 的超链接 IE: window.open(“URL”, “_...
gif.js 是一个可直接在浏览器上运行的 JavaScript GIF 编码器。支持的浏览器包括:Google ChromeFirefox 17Safari 6Internet ...window.open(URL.createObjectURL(blob)); }); gif.render(); 标签:gifjs
ajax经典实例大全1 <!... function loadXMLDoc() { var xmlhttp;... if (window.XMLHttpRequest) ... // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码 ... document.getElementById("myDiv").... xmlhttp.open
软件包webarchive读取Safari .webarchive文件。 例子 package main import "github.com/dwlnetnl/webarchive" func main () { r , err := os . Open ( "/path/to/saved.webarchive" ) if err != nil { log . ...
* Added safe check for window.localStorage in .NET WebDriverBackedSelenium implementation. Patch provided by Timofey Vasenin. * Implemented pluggable element locator factories for .NET PageFactory....
js中一般新打开窗口很简单直接window.open(url);就可以了, 但是由于我希望传递参数到服务端,而且参数看起来很长一串,而且get方式的提交参数长度是有限制的,因此我有以下需求: 1,js中实现post提交 2,返回的...
tips[27] = '“放之四海皆准则”的是真理,真理并不是一种方法,没有一种方法能解决所有的问题;掌握真理,而不是掌握某种方法。'; tips[28] = '在理解的基础上借鉴,就是站在巨人的肩膀之上;没有区分的全盘抄袭,...
支持全屏编辑 (Demo) <br/>It does not open a new window, instead it will resize to fit the browser screen. Edit in full screen mode, maximizing your available space. <br/> ...
25大实用的jQuery技巧和解决方案 1 去除页面的右键菜单 $ document ready function { $ document bind "contextmenu" function e { return false; } ; } ; 2 搜索输入框文字的消失 当鼠标获得焦点 ...