【转载】window.open被浏览器拦截的解决办法

2019-03-10 11:54:31来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

今天在处理程序的过程中,发现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事件。

 

扩展阅读:Javascript读取和设置Cookie值。 

备注:此文章转载自博主个人技术站点:IT技术小趣屋。原文链接:查看原文。


原文链接:https://www.cnblogs.com/xu-yi/p/10501685.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:vue里使用百度地图

下一篇:关于js开发中保留小数位计算函数(以向上取整或向下取整的方式保