打开新窗口方式:

1.页面标签跳转
<a href="#" target="_blank">新页面</a>复制代码
2.js跳转
window.open('#')复制代码

遇到的问题:

window.open( )在正常的点击事件中可以正常使用,但是在接口请求完成后调用会被浏览器默认拦截。
// 正常跳转
function newWindow(){    window.open('http://www.test.com')
}复制代码

// 被拦截示例
fetch(url,option).then(res=>{    window.open('http://www.test.com')
})复制代码

尝试方法:

先打开一个空的窗口,然后再给新窗口赋值跳转链接。
//尝试的方法,被拦截
fetch(url,option).then(res=>{    let newWindow = window.open(' ', '_blank')   newWindow.location.href='http://www.test.com/?name=' + res.name
})复制代码

仍然会被拦截,并且浏览器报错winHandler为undefined。

解决方法:

把newWindow定义在接口请求的外部,保证新开空白窗口不会被拦截。
//正常跳转,不会被拦截
let newWindow = window.open(' ', '_blank')
fetch(url,option).then(res=>{   newWindow.location.href='http://www.test.com/?name=' + res.name
})复制代码

最终优化:

新打开一个空白窗口,等到之前页面接口返回结果时新页面才会打
开对应链接,这中间会有不定时间的空白期,体验不好。
可以给新开的空白页面赋值一个携带loading标识的链接,让新页
面处于加载中状态。待接口返回数据后再重新更改链接。
//正常跳转,不会被拦截,添加loading标识
let newWindow = window.open('http://www.test.com/#loading ', '_blank')fetch(url,option).then(res=>{   newWindow.location.href='http://www.test.com/?name=' + res.name
})复制代码

//新页面通过hash接收loading标识
render () {    if (window.location.hash === '#loading') {      return <Spin tip='Loading...' style={{margin: '100px auto', display: 'block'}} />    } else {      return (        <Index />      )    }
}复制代码

window.open()新开浏览器窗口被拦截处理相关推荐

  1. html新开浏览器窗口,如何在当前浏览器窗口(html)中显示新窗口?

    我正在尝试创建一个嵌入式 这是我需要做的: 显示在用于打开cover.htm文件浏览器窗口中form.htm文件. (提示:使用"opener"关键字引用主浏览器窗口,并使用loc ...

  2. Web: 使用Javascript新开一个浏览器标签而不是新开一个窗口

    很多浏览器对新开弹出窗口进行了限制,popup窗口在默认情况下会被block掉. 这样可能会造成按钮/链接/脚本不工作的假象. window.open("http:www.techbrood ...

  3. 软件测试面试题:在一个页面上,点击一个链接之后不会在当前页面上打开此链接而是新开一个窗口打开此页面。

    在一个页面上,点击一个链接之后不会在当前页面上打开此链接而是新开一个窗口打开此页面. Selenium也提供了对应的API来处理.简述这个查找新窗口的过程.参考答案:1)首先需要了解下,每个窗口都是有 ...

  4. 如何通过 js 打开一个新的浏览器窗口

    Aphorism Grow In Errors! 前言 最近 肾七 电池不耐用了, 想想 左腹就隐隐作痛, 咳咳 ,回归正题, 我就联系了下 apple 客服,准备换个 电池,2018年 12.31 ...

  5. window.open新开页时页面访问不了问题

    window.open新开页时页面访问不了问题 当项目中需要新开页跳转到其他网站时,最常用的方法就是使用window.open(url)来实现,最近在项目中,使用window.open()方法新开页跳 ...

  6. python selenium:不新开浏览器,而是在已开的浏览器进行操作

    python selenium:不新开浏览器,而是在已开的浏览器进行操作 Mac :http://www.manongjc.com/detail/27-htmfglaegusjdpx.html win ...

  7. angular js 打开新的浏览器窗口

    1.带参数打开新窗口 const newPath = location.origin + '/list' + '?name=' + name + '&sex=' + sex ; const w ...

  8. SAP C4C url Mashup的跳转工作原理 - 新的浏览器窗口是如何打开的

    一个例子: 我在SalesLead TI页面的这个tab里配置了一个url Mashup,点击之后会跳转到bing的页面: 然而从Chrome开发者工具的Elements标签页里并未看到target ...

  9. 使用js直接下载pdf文件而不用在新的浏览器窗口打开

    最近接了一个需求,要求用户点击下载按钮后直接下载pdf文件,而不是打开一个新窗口,让用户再去手动保存. 接到需求后我立刻着手在网上查找文档,发现很多声称可以实现直接下载的方法都不行,只有下面这个方法成 ...

最新文章

  1. vfp 右键发送邮件_邮件批量发送的方法教程
  2. C语言如何使用其他文件定义的结构体?(C++报错:无法转换到不完整的类【需在头文件中定义结构体??】)
  3. 互联网1分钟 |1122
  4. SAP Spartacus MyCompany菜单里Org unit的Add按钮Accessibility问题初始分析
  5. react部署在node_如何在没有命令行的情况下在3分钟内将React + Node应用程序部署到Heroku
  6. MyBatis学习总结(12)——Mybatis+Mysql分页查询
  7. python中打开文件时只允许写入的模式是_在open函数中访问模式参数使用()表示打开一个文件只用于写入。(4.0分)_学小易找答案...
  8. python-字典方法(dict)知识整理
  9. vsbutton中的集合编辑器怎么打开_理工科学生的好帮手,EdrawMath数学公式编辑器...
  10. JMeter使用教程-压测
  11. 通俗易懂的Matlab线性规划求解详解
  12. 【Python 小白到精通 | 课程笔记】第三章:数据处理就像侦探游戏(函数和包)
  13. 基于php的校园垃圾分类网站的设计与实现
  14. 【数字孪生】UE4虚幻引擎与前端Web页面的结合
  15. 结果导向和自管理的联系
  16. 给大家分享一下指纹挂锁的方案
  17. 题目中的英语短语积累
  18. Python消费人格雷达图
  19. Win下基于通用C运行库UCRT的部署 - 及 {C++/CLI封装的托管dll被C#工程调用时出现未加载(could not load file or assembly)错误排查}
  20. Cadence Allegro snap pick to选择捕获功能图文教程及视频演示

热门文章

  1. offsetwidth/offsetheight的区别
  2. CSS position 属性
  3. 遍历一个数据去掉最后一个元素的样式
  4. 【PC端vue ui框架学习】vue项目如何使用基于vue的UI框架iview
  5. PHP用户登录功能实现
  6. angular6继承类注意几点:
  7. 百会CRM教你在大数据平台中做精准营销
  8. Linux--网卡聚合简单脚本(bond0)
  9. FastClick使用之trigger触发click失效
  10. Activity启动模式 launchMode