window.open被浏览器拦截的解决办法

今天在处理程序的过程中,发现window.open方法会被浏览器拦截,导致无法打开新页面,查阅相关资料后发现,主要原因是浏览器为了维护用户安全和体验,禁止在javascript中直接使用window.open(url)来打开新的链接,window.open(url,”_self”)改变当前的窗口是可以生效的。为了实现window.open打开新窗口不被浏览器拦截,我们只能通过模拟用户操作的方式来实现。

我们可以模拟用户点击a标签的操作来实现这个功能,代码如下:

//新窗口打开网页

function openWin(url) {

try {

var el1 = document.createElement('a');

el1.setAttribute("target", "_blank");

el1.setAttribute("id", "openWin");

el1.setAttribute("href", url);

document.body.appendChild(el1);

document.getElementById("openWin").click();//点击事件

document.body.removeChild(el1);

}

catch (e) {

window.open(url);

}

}

首先创建了个A标签,然后将url赋值给a标签,将设置好的a标签添加到Body中,js调用a标签的click事件。

原文地址:window.open被浏览器拦截的解决办法 _IT技术小趣屋。文章的更新编辑依此链接为准。欢迎关注源站原创文章!

你可能感兴趣的:(window.open被浏览器拦截的解决办法)