zoukankan      html  css  js  c++  java
  • window.open不被拦截

    经常有人用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")



  • 相关阅读:
    git commit 合并
    git 管理 Linux 文件系统
    python 全局变量的使用
    JavaScript 中 类型转换
    canconfig 配置命令
    python 调用 shell 命令
    python 3 操作mysql数据库的方法
    python 字符串和整数,浮点型互相转换
    JavaScript 里面的整数 位 操作
    JavaScript 使用 php 的变量
  • 原文地址:https://www.cnblogs.com/litao229/p/2367056.html
Copyright © 2011-2022 走看看