我们可以增加判断,如果该弹出窗口被浏览器拦截,则只要用户点击页面就触发 window.open 事件,这样一般不会拦截,浏览器会认为这是用户的默认行为。
代码可编写如下:
复制代码 代码如下:
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 参数内容
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
网友评论