博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
window.open不被拦截
阅读量:4969 次
发布时间:2019-06-12

本文共 1312 字,大约阅读时间需要 4 分钟。

经常有人用window.open()的时候被浏览器拦截了  比如

btn.οnclick=function(){

     function aa (){

       window.open("xxx");

    }

    aa();

}

其实,如果你的window.open写在用户事件处理函数的当前作用域下,是不会的,只要用户点击页面就触发 window.open 事件,这样一般不会拦截,浏览器会认为这是用户的默认行为。

btn.οnclick=function(){  

       window.open("xxx");

}

其实这样的代码是可行的不会有问题

也可以代码可编写如下:

 
var $E = YAHOO.util.Event; var adPopup; var popAd = function(sURL,sName,sFeatures,bReplace) {
if (adPopup) return; if(sName == undefined) {
sName = '_blank'; }; if(sFeatures == undefined) { sFeatures = ''; }; if(bReplace == undefined) { bReplace = false; }; adPopup = window.open(sURL,sTarget,sFeatures,bReplace); adPopup.blur(); adPopup.opener.focus(); $E.removeListener(document.body, 'click', arguments.callee); } try { popAd(); } catch (e) { $E.on(document.body, 'click', popAd); }
 

当然如果用户浏览器安装了拦截插件,那很有可能不会弹出(比如 Firefox 的 noscript 插件,就不允许任何弹出窗)。方法不是绝对的,也不是最好的,只是用最少的时间来做最效率的事情。

PS:可以通过模拟 form 提交的方式来弹出窗口,穿越性(相对于一般拦截弹窗的插件)很好,不过无法设置 sFeatures 参数内容

       

function openUrl( url ){
var f=document.createElement("form"); f.setAttribute("action" , url ); f.setAttribute("method" , 'get' ); f.setAttribute("target" , '_black' ); document.body.appendChild(f) f.submit(); } openUrl("http://www.qq.com")

转载于:https://www.cnblogs.com/litao229/archive/2012/02/24/2367056.html

你可能感兴趣的文章
Java中对List集合内的元素进行顺序、倒序、随机排序的示例代码
查看>>
css选择器
查看>>
看懂下面C++代码才说你理解了C++多态虚函数!
查看>>
ASP.NET上传下载文件
查看>>
Galaxy Nexus 全屏显示-隐藏Navigation Bar
查看>>
Mob-第三方分享 /手机验证码
查看>>
Spring中使用Velocity模板
查看>>
实现model中的文件上传FTP(一)
查看>>
MonkeyRecorder
查看>>
Maven概述
查看>>
上周热点回顾(8.18-8.24)
查看>>
Feature toggle
查看>>
day02
查看>>
我是怎么招聘程序员的
查看>>
gvim 配置Pydiction
查看>>
Linux安装指定mysql版本
查看>>
Exception in thread "main" java.lang.ClassNotFoundException: 解决方法
查看>>
移动应用(手机应用)开发IM聊天程序解决方案
查看>>
[转载] K3漏油器全紫铜替换原硅胶垫教程。标准姿势
查看>>
python set
查看>>