转自:http://www.cnblogs.com/litao229/archive/2012/02/24/2367056.html
经常有人用window.open()的时候被浏览器拦截了 比如
btn.onclick=function(){
function aa (){
window.open("xxx");
}
aa();
}
其实,如果你的window.open写在用户事件处理函数的当前作用域下,是不会的,只要用户点击页面就触发 window.open 事件,这样一般不会拦截,浏览器会认为这是用户的默认行为。
btn.onclick=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")
相关推荐
最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,搞得人无比郁闷啊,虽然在自己的环境可以对页面进行放行,但是对用户来说,不能要求用户都来通过拦截。何况当出现拦截时,很多小白根本不知道发生了啥...
我现在要说的是window.open函数的几个使用策略,一般情况下,如果你直接在js中调用window.open()函数去打开一个新窗口,浏览器会拦截你,认为你将弹出广告等用户不想得到的窗体,所以如果不想让浏览器拦截你,你...
现在越来越多的浏览器有拦截弹出窗口的功能。广告弹出来给拦掉了就无所谓,要是客户在付款时给拦掉了可就不能乱算了。 Gmail的“哎呀”算是经典,可是,前天心云给出了更帅的提示=。= 记得打开浏览器拦截后 测试...
在Web编程中,使用JS在新窗口打开页面的时候,会遇到被浏览器拦截的情况,那么,我们如何才能让JS打开新窗口不被浏览器阻止呢? 一、问题一 一般情况下,如果直接在js中调用window.open()函数去打开一个新窗口,...
相信用过window.open的小伙伴们都遇到过被浏览器拦截导致页面无法弹出的情况;我们换下思路,什么情况下的新页面弹出才不会被浏览器拦截呢?比如标签这种就不会;那么我们只要模拟下用户去主动点击这个标签就不会有...
Popup Blocker 是一个轻量级扩展程序,用于防止网站打开弹出窗口(而其他弹出窗口阻止程序在创建后不会阻止弹出窗口,而是在收到请求后阻止它们)。 该扩展程序会暂停所有类型的窗口打开请求以引起用户注意。 您...
我们可以增加判断,如果该弹出窗口被浏览器拦截,则只要用户点击页面就触发 window.open 事件,这样一般不会拦截,浏览器会认为这是用户的默认行为。 代码可编写如下: var $E = YAHOO.util.Event;var adPopup;...
一般直接用 window.open方法弹出新窗口最大的问题是在给一些浏览器或工具拦截了, 这个问题比较难解决, 上次忽然想到当用户点击连接再弹出新窗口时是不会拦截的, 何不用JS模拟这个点击事件,所以马上试下, 果然...
在web开发中,对于浏览器默认的消息提示框(如alert,confirm等)外观无法控制,同时我们经常希望能实现一些window.open之类的弹出框,但window.open弹出框存在诸多问题,如可能被拦截,界面不美观等。 为了实现更好...
v2.1.6.12:*,使用聪明的CreateEvent方法以避免网站行为中断*,如果用户直接单击v2.1.6.11,则允许在其主机名上弹出窗口:*,修复版本显示并重置默认选项v2.1.6.9: *,修复了不兼容的额外选项功能,例如:eval,...
在web开发中,对于浏览器默认的消息提示框(如alert,confirm等)外观无法控制,同时我们经常希望能实现一些window.open之类的弹出框,但window.open弹出框存在诸多问题,如可能被拦截,界面不美观等。 为了实现更好...
web开发中,对于浏览器默认的消息提示框(如alert,confirm等)外观无法控制,同时我们经常希望能实现一些window.open之类的弹出框,但window.open弹出框存在诸多问题,如可能被拦截,界面不美观等。 为了实现更好的...
* 兼容模式 window.open 未利用空白页. [用户界面] * 解决某种情况下侧边栏显示错误的问题. * 嗅探器的选择框在没有嗅探到内容的情况下, 勾选后无法取消. * 解决一些傲游迅雷加速下载的界面和语言问题. [侧边栏] *...
我们可以增加判断,如果该弹出窗口被浏览器拦截,则只要用户点击页面就触发 window.open 事件,这样一般不会拦截,浏览器会认为这是用户的默认行为。 代码可编写如下: 代码如下:var $E = YAHOO.util.Event; ...
弹窗是网页中经常看到的效果,以前的弹窗是用window.open()等方式在浏览器窗口新建另一个新窗口来完成的,这种弹窗方式现在已经被很多浏览器所拦截。今天我们来用更加友好的方式来实现弹窗效果。完成的功能效果如图...