`

如何防止window.open打开的弹出窗口被浏览器拦截

阅读更多

转自: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")
复制代码
分享到:
评论
1 楼 LJinker 2015-10-08  
无法带参数

相关推荐

    window.open打开新窗口,不被拦截的方法

    但是,在实际应用中,由于浏览器的安全策略限制(如弹出窗口拦截功能),直接使用`window.open()`可能会导致新窗口被浏览器自动拦截,从而无法正常显示。本文将详细介绍如何使用`window.open()`方法打开新窗口,并...

    window.open关于浏览器拦截问题分析及解决方法

    总的来说,解决`window.open()`被浏览器拦截的问题,关键在于确保用户与页面的交互是触发新窗口打开的原因。开发者应尽量遵循良好的用户体验原则,避免不必要的弹窗,同时根据实际需求选择合适的解决方案。在实际...

    window.open

    为了让`window.open()`不被浏览器拦截,开发者需要注意以下几点: 1. **确保用户交互**:确保`window.open()`是在用户明确的操作之后调用的,例如点击按钮。 2. **避免滥用**:不要滥用`window.open()`,只在必要的...

    Window.open在chrome中被block issue分析及解决

    为了防止恶意网站频繁弹出新窗口,Chrome对window.open有严格的限制。例如,当用户没有交互行为(如点击按钮)时,非用户触发的window.open可能会被阻止。此外,如果页面已经存在多个窗口,新的window.open请求也...

    window.open全攻略

    请注意,过度使用`window.open()` 可能会引起用户的反感,因为它可能会被浏览器的弹窗阻止功能拦截,或者在用户体验方面被视为不友好。因此,谨慎使用,并考虑使用其他交互方式,如模态对话框,以提供更好的用户体验...

    JS打开新窗口防止被浏览器阻止的方法

    用传统的window.open()方式打开新窗口,会被浏览器阻止,那么,我们如何才能让JS打开新窗口不被浏览器阻止呢?其实办法还是有的,这里我们就来分析一下如何解决这个问题 我最近也遇到了这样的问题,所以就把弹出新...

    详解window.open被浏览器拦截的解决方案

    浏览器为了防止恶意脚本无休止地弹出窗口,会对非用户交互触发的`window.open`调用进行拦截。本文将详细讲解这一现象,并提供相应的解决方案。 **现象分析** 在项目开发中,如果直接通过JavaScript代码调用`window....

    js实现window.open不被拦截的解决方法汇总

    文章中提到了几种实现 `window.open()` 方法不被浏览器拦截的解决方法,其中包括新建 `a` 标签模拟点击、使用 `window.showModalDialog()` 方法和使用 `setTimeout()` 与 `window.open()` 结合的方式。 1. 新建 `a`...

    window.open打开窗口被拦截的快速解决方法

    在网页开发过程中,有时我们需要使用JavaScript的`window.open`函数来打开新的窗口或标签页,例如用于弹出新窗口展示详细信息或者进行页面跳转。然而,由于浏览器的安全策略和用户设置,`window.open`可能会被拦截,...

    Ajax请求响应中用window.open打开新窗口被拦截的解决方法

    这种机制是为了防止恶意软件自动弹出窗口,干扰用户。 首先,问题的出现是因为浏览器将`window.open()`调用解释为非用户发起的事件,因此将其拦截。尽管在AJAX回调函数中模拟用户行为(如使用jQuery的`.trigger('...

    window.open被浏览器拦截后的自定义提示效果代码

    ### window.open被浏览器拦截后的自定义提示效果代码 随着网络安全意识的提高以及用户体验的优化,现代浏览器大多具备了拦截弹窗的功能。这一功能虽然能够有效防止不必要的广告干扰用户浏览体验,但也可能导致某些...

    popup:通过 window.open() 创建原生弹出窗口的组件

    确保用户有明确的动作触发弹出窗口,以避免被浏览器拦截。 - **权限问题**:如果用户已经阻止了网页的弹窗,`window.open()`可能不会工作。在这种情况下,你可能需要提示用户更改他们的浏览器设置或使用其他交互...

    window.open不被拦截的实现代码

    为了解决这个问题,我们可以使用`window.open`方法配合一些策略来避免窗口被浏览器拦截。 `window.open`是JavaScript中的一个内置函数,用于创建一个新的浏览器窗口、打开已存在的窗口或者替换当前窗口。基本语法...

    强制弹出窗口的方法

    如果`window.open()`返回`null`,则表示浏览器可能拦截了弹出窗口,此时可以通过弹出警告告知用户。 此外,`features`参数中的特性还可以自定义窗口的样式,例如: ```javascript var features = 'width=800, ...

    window.open不被拦截的简单实现代码(推荐)

    在这个例子中,点击元素 `#last` 后,新窗口会被打开,但其位置会被设置为 `jb51.net` 在1秒后,这样浏览器会认为这是用户交互的一部分,而不是自动弹出的广告。 3. **先打开窗口,后设置URL**:另一种策略是先打开...

    window.open打开页面居中显示的示例代码

    在网页开发中,有时我们需要创建一个新的浏览器窗口来展示特定的内容,`window.open` 是...此外,由于浏览器的同源策略和弹窗拦截策略,`window.open`可能在某些情况下被限制,因此在开发时需要考虑到这些潜在的问题。

    Xilium CefGlue 浏览器弹出新窗口,改为新标签选项卡中打开的问题

    在使用Xilium CefGlue时,可能会遇到一个常见的问题,即浏览器组件在点击链接或执行JavaScript的`window.open`时,会弹出新的窗口,而不是在当前窗口或者在已存在的标签页中打开。这可能不符合用户的期望,特别是...

    window设定打开和关闭窗口的方法

    5. 弹出窗口的最佳实践:尽量避免使用弹出窗口,因为它们可能被浏览器的弹窗阻止功能拦截,且对用户体验造成负面影响。若必须使用,可以考虑使用模态对话框(modal dialogs)或者使用HTML5的`<dialog>`元素。 6. ...

Global site tag (gtag.js) - Google Analytics