防止浏览器拦截的新窗口打开链接方案
2014-08-13 11:14
253 查看
背景
当前的浏览器为了保证用户体验,在很多场合下禁止了window.open打开新窗口,下面就给出一些方案,最大程度上的实现新窗口打开一个链接。
方案
思路
其实做法很简单,首先模拟A标签点击打开新窗口,若失败再直接调用window.open方法。
问题
目前无法在异步的情况下调用该方法。如下:
当前的浏览器为了保证用户体验,在很多场合下禁止了window.open打开新窗口,下面就给出一些方案,最大程度上的实现新窗口打开一个链接。
方案
//打开新链接方法实现 function windowOpen(){ var a = document.createElement("a"); a.setAttribute("href", url); if(target == null){ target = ''; } a.setAttribute("target", target); document.body.appendChild(a); if(a.click){ a.click(); }else{ try{ var evt = document.createEvent('Event'); a.initEvent('click', true, true); a.dispatchEvent(evt); }catch(e){ window.open(url); } } document.body.removeChild(a); } //新窗口打开 windowOpen('http://niu.xunlei.com/', '_blank'); //当前窗口打开 windowOpen('http://niu.xunlei.com/', '_self');
思路
其实做法很简单,首先模拟A标签点击打开新窗口,若失败再直接调用window.open方法。
问题
目前无法在异步的情况下调用该方法。如下:
//以下做法将得不到期望的结果,会被浏览器阻止 $.get("http://www.a.com/ajax",function(){ windowOpen('http://niu.xunlei.com/', '_blank'); });
相关文章推荐
- ajax请求 用新窗口打开 防止浏览器阻止和拦截
- 防止浏览器拦截的window.open新窗口方案
- 如何防止window.open打开的弹出窗口被浏览器拦截
- ajax请求之后 用新窗口打开 防止浏览器阻止和拦截
- 防止WebBrowser在新窗口中打开链接页面
- 浏览器链接只打开一个窗口
- C#防止WebBrowser在新窗口中打开链接页面
- window.open打开新窗口,防止浏览器阻止弹窗解决办法
- Flash打开新窗口 被浏览器拦截 navigateToURL被拦截
- IE8.0 浏览器 用新选项卡打开 新窗口,IE8如何在设置默认“在新选项卡中打开链接”。
- 用JS打开新窗口,防止被浏览器阻止的方法
- C#防止WebBrowser在新窗口中打开链接页面
- 利用Response.Redirect 在新窗口中打开,防止window.open新窗口打开被拦截
- 让网站所有链接打开方式都在浏览器新窗口中打开的方法
- JS打开新窗口防止被浏览器阻止的方法
- JS打开新窗口防止被浏览器阻止的方法
- Response.Redirect 防止window.open新窗口打开被拦截
- Flash打开新窗口 被浏览器拦截问题 navigateToURL被拦截 真正试验结果
- C#防止WebBrowser在新窗口中打开链接页面
- window.open打开新窗口被浏览器拦截的处理方法