解决弹出的窗口会被浏览器阻止的问题

常用的打开新窗口的方式

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

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
星遐的头像 - 宋马
评论 抢沙发

请登录后发表评论

    暂无评论内容