zoukankan      html  css  js  c++  java
  • 解决弹出的窗口会被浏览器阻止的问题

    常用的打开新窗口的方式

    1、window.open()

    2、用a标签的target="_blank"

      在模板中插入一个a标签,然后javascript去触发a链接的click,实现跳转。(该方法在jQuery跟js中有坑...)

    <a href="http://wuliv.com" id="openNew"></a>
    $('#openNew')[0].click()
    document.getElementById('openNew').click()

    $("#openNew")得到的是一个jquery的对象,jquery本身对该对象的一些属性进行了封装,所以会导致click失效;而使用js对象 document.getElementById("a") 则不会存在该问题

    onclick()也可以触发事件,但是onclick跟click不同;
    onclick触发的是方法,而click先触发按钮的点击事件,再触发方法。
    如果该对象没有绑定onclick方法则无法被触发,而click没有绑定方法也可以触发。

    var a = document.createElement('a');
    a.target = '_blank'
    a.href = 'http://www.baidu.com'
    document.body.appendChild(a)
    // var e = document.createEvent('MouseEvents');
    // e.initEvent('click', true, true);
    // a.dispatchEvent(e);
    a.click();

    原因:当浏览器检测到非用户操作产生的新弹出窗口,则会对其进行阻止。因为浏览器认为这不是用户希望看到的页面

    结果:当点击事件1s之后再自动触发这个跳转事件,浏览器会拦截

    解决方法:

    1、ajax请求设置成同步的方式  async: false

    2、window.open()

    请求时先打开一个空页面
    var newWindow = window.open();
    请求返回结果之后
    newWindow.location.href = fileUrl
  • 相关阅读:
    ASP获取客户端硬件信息(CPU、硬盘、主板、mac地址等)
    Java(多态)动手动脑
    每周进度条(第二周)
    Java(异常处理)动手动脑
    软件工程概论课后作业1
    mysqlmmm官方安装指南翻译
    Mysql 字符集的修改步骤
    Amoeba搞定mysql主从读写分离
    邮件系统postfix安装和设置
    mysqlmmm实现mysql高可用
  • 原文地址:https://www.cnblogs.com/fenwen/p/10737584.html
Copyright © 2011-2022 走看看