项目需求要在新窗口打开链接,但被拦截了

1.问题

  • 需要在ajax回调中在新窗口打开页面
  • 在浏览器开启拦截弹窗时,window.open(src, "_blank");这个会被拦截

2.发现

  • 浏览器会拦截所有非用户触发的新窗口打开页面(js的跳转)

  • 判断浏览器是否打开新窗口的代码不兼容

    • js代码
    var flag = false;
    try{var winSrc = window.open("https://www.csdn.net/","_blank");if(winSrc == null){flag = true;}
    }catch(e){flag = true;
    }
    if(flag){console.log("window.open()为null")
    }
    
    • 检验效果

      • pc端,检测了几个浏览器,都是ok的
      • 苹果端,用这个判断是ok的
      • 安卓端,会显示被拦截,但是flag为false,winSrc不为null
  • 延迟这个打开操作无效

    setTimeout('window.open(url);', 500); // 延迟时间不能太短 否则也会被拦截
    

3.解决办法

  • 弹窗,按钮使用a标签,在新窗口打开页面
    不区分浏览器,需要在ajax回调中在新窗口打开页面时,都弹出一个弹窗(包含a标签按钮),修改a标签的src,引导用户点击按钮,实现防止浏览器拦截新窗口弹窗的功能

4.例子

  • html代码
<div class="pop"><div class="box"><p class="text01">订单创建成功</p><p class="text02">请前往订单页面查看信息</p><div class="boxBtn"><a class="boxBtnCheck" target="_blank" href="">查看订单</a></div></div>
</div>
  • js代码
//ajax回调中使用
$('.boxBtnCheck').attr('href', res.data)
$('.pop').show()//兼容的弹窗 关闭
$('.boxBtnCheck').click(function () {$('.pop').hide()
});

5.参考文章

  • JS检测浏览器弹出窗口是否被屏蔽
  • window.open(url)打开链接被浏览器拦截解决方案

js防止浏览器拦截新窗口弹出相关推荐

  1. js控制浏览器窗口弹出、警告框、确认框

    描述 js控制浏览器窗口弹出.警告框.确认框 代码 function fun1(){alert("喜欢我"); }function fun2(){var bo = confirm( ...

  2. ie浏览器自动拦截html,win10系统下IE浏览器总是阻止页面窗口弹出怎么办

    不少朋友在使用ie浏览器浏览网页时都遇到过页面被阻止,弹不出来的问题,并且还会提示"Internet Explorer 已对此页面进行了修改,以帮助阻止跨站脚本.单击此处,获取详细信息... ...

  3. css关闭窗口按钮的代码,JS+CSS实现带关闭按钮DIV弹出窗口的方法

    这篇文章主要介绍了JS+CSS实现带关闭按钮DIV弹出窗口的方法,实例分析了div弹出层窗口的实现技巧,非常具有实用价值,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了JS+CSS实现带关 ...

  4. php 弹窗代码大全,PHP_asp.net弹出窗口代码大全,//关闭,父窗口弹出对话框,子窗 - phpStudy...

    asp.net弹出窗口代码大全 //关闭,父窗口弹出对话框,子窗口直接关闭 this.Response.Write(""); //关闭,父窗口和子窗口都不弹出对话框,直接关闭 th ...

  5. 手机uc新窗口打开的html标签,在电脑UC浏览器的新窗口页中如何打开书签

    在电脑UC浏览器的新窗口页中如何打开书签 UC浏览器是一个很不错的查询资料的软件,我们可以在UC浏览器的新标签页中打开书签,那么如何打开呢?小编就来为大家介绍一下吧. 具体如下: 1. 第一步,双击并 ...

  6. java弹出浏览器提示框_js弹出框、对话框、提示框、弹窗总结

    一.JS的三种最常见的对话框 //====================== JS最常用三种弹出对话框 ======================== //弹出对话框并输出一段提示信息 funct ...

  7. CHtmlView当前浏览器打开新窗口

    在自己编写的浏览器软件中,对于在新窗口打开的页面默认调用系统默认浏览器打开,而不是在当前浏览器中打开,以下在MDI中调用OnNewWindow2实现在自己的浏览器中新窗口打开,原理即是修改OnNewW ...

  8. 搜狗服务器页面找不到了怎么办,Win10系统 搜狗浏览器打不开弹出无法解析服务器的DNS地址该如何处理...

    导语:搜狗浏览器能够给我们带来很棒的网页浏览体验,功能也十分强大.不过,最近一些win10系统用户反馈自己打开网页提示页面找不到了- 错误信息:如法解析服务器的dns地址,碰到这样的情况我们该怎么办呢 ...

  9. Js+DVML:很酷实用的右键弹出菜单

    <HTML xmlns:v><HEAD> <head> <meta http-equiv="Content-Type" content=& ...

最新文章

  1. 随记:kickstart远程批量无人值守安装linux
  2. chm文件无法正常显示
  3. 通过先序和中序数组生成后续数组
  4. JAVASE_File类(实践)——目录拷贝
  5. ITK:建立一个Hello World程序
  6. “脚踢各大Python Web框架”,Sanic真有这能耐么?
  7. cnpm 网络不能连接_(二十七)通俗易懂理解——Resnet残差网络
  8. ios 高德地图加载瓦片地图_IOS 高德地图 API 加载 WMS 服务
  9. 安装出现 PHP Extension curl must be loaded 错误(magento)
  10. 团队开发冲刺1.2(2015.5.10)
  11. 那些一心想要离开 BAT 的人,后来怎么样了?
  12. 比较nio大体上优于io的方面
  13. 基于机器视觉的电阻焊接质量检测
  14. 在没有创建Provision Profile权限的情况下 发布Enterprise inhouse app 的方法
  15. dea分析的matlab实现,利用MATLAB进行DEA交叉评价分析
  16. python百度文库源码_Python源码剖析3
  17. 千万级数据清洗ETL设计方案
  18. 陕西中医药有计算机系吗,校内制度 - 陕西中医药大学信息化建设管理处
  19. 5 Linux系统编程之网络编程--学习笔记
  20. 阿里数据中台维度建模规范、维度模型设计及模型实施方法论

热门文章

  1. 完整的Web前端开发学习路线图
  2. 雪灾报道词汇:停电,限电
  3. 马斯克身价缩水1100亿美元 特斯拉却单季在华营收51亿美元
  4. cPanel账户从经销商托管迁移到美国虚拟主机的指南
  5. 视频监控业务上云方案解析
  6. 深度学习炼丹-不平衡样本的处理
  7. CSRF验证失败. 请求被中断.
  8. 渐变色canvas-微信小程序
  9. 安装 SS5 SOCKS5 代理服务器
  10. 如何使用精诚CRM管理项目,让项目更精诚