window.open无法打开新窗口
为什么要做这个东西
最近做一个需求,前端请求一个接口,后台生成文件以后返回文件名,前端再通过window.open下载这个文件。发现window.open有时生效有时不生效,后来查阅资料后发现浏览器出安全方面的考量,会把用户操作完页面后一段时间内的window.open视为非法操作屏蔽掉,这个时间后来经过测试大概是五秒;如果接口请求比较耗时就会导致open被屏蔽。这里封装一个函数,用户操作完页面4.5秒后请求没有完成时先执行window.open,接口请求完成后替换新窗口的url完成文件下载。如果在4.5秒内请求完成了就直接执行window.open
代码
function asyncOpenWindow(promise) {let newWindow = null;const timeOut = setTimeout(() => {try {if (navigator.userAgent.indexOf('Chrome') > -1) {newWindow = window.open('', '', 'width=500,height=100,location=no,menubar=no');}} catch (e) {console.log(e);}}, 4500);promise.then((url) => {clearTimeout(timeOut);if (newWindow) {newWindow.location.href = url;} else {window.open(url);}});
}
使用
const fn =asncy function(){const url =await requset
return url
}
asyncOpenWindow(fn())
window.open无法打开新窗口相关推荐
- window.open 不打开新窗口_关闭四十年的“新窗口”,由谁打开?
历史是有趣的,有时候时势造英雄,英雄却无用武之地.偏振测量是X射线天文学最早探索的方向之一,却成为最晚打开的窗口.守得住四十年的寂寞,是因为期盼云开月明的一天.这四十年发生了什么,又有何感悟? (图源 ...
- js打开新窗口并且不被拦截
js打开新窗口并且不被拦截 window.open是javascript函数,该函数的作用是打开一个新窗口或这改变原来的窗口,如果你直接在js中调用window.open()函数去打开一个新窗口,浏览 ...
- window.open 打开新窗口被拦截的其他解决方法
使用window.open 打开新窗口容易被浏览器拦截,可以使用下面的方法解决 if ($("#jiedaitype").val() == "1") { ...
- JS打开新窗口的代码window.showModalDialog()
用JS代码打开新窗口 function openNewWindow(url,width,height,formname) { var feature="dialogWidth:&qu ...
- window.open打开新窗口被浏览器拦截的处理方法
一般我们在打开页面的时候, 最常用的就是用<a>标签,如果是新窗口打开就价格target="_blank"属性就可以了, 如果只是刷新当前页面就用window.loca ...
- JavaScript浏览器window对象→简介、消息对话框、计时器、history、打开新窗口及模式showModalDialog、location、navigator、screen、窗口位置尺寸
window对象 alert消息提示对话框 confirm消息确认对话框 prompt互动对话框 计时器 setInterval周期计时器 setTimeout延迟计时器 window.history ...
- 使用 window.open 打开新窗口
打开新窗口的方式有哪些 在链接上单击右键,然后选择「在新窗口打开链接」或者「在新标签打开链接」 按住键盘上的 Ctrl/Command 单击链接,新标签打开链接 <a href=".. ...
- 使用window.open打开新窗口被谷歌浏览器拦截
在写后台动态传前台资源链接的时候,需要用到,返回后直接在新窗口打开.开发使用的谷歌浏览器,使用window.open(),测试的时候,发现总是被拦截,这这里记录下解决的方法. 找了写资料,说是当非用户 ...
- js -- 打开新窗口(window.open)、关闭窗口(window.close)
open() 方法可以查找一个已经存在或者新建的浏览器窗口. 语法: window.open([URL], [窗口名称], [参数字符串]) 参数说明: URL:可选参数,在窗口中要显示网页的网址或路 ...
- window.open()打开新窗口被浏览器拦截
原因:在浏览器的安全机制里面,非用户触发的window.open方法,是会被拦截的. 经过实际测试,Chrome.IE不会拦截,FireFox会拦截. //不会被拦截 $('#btn').click( ...
最新文章
- “人文清华”讲坛——陈国青 大数据:颠覆的力量(附视频)
- Spring学习(五)——Spring注解(一)
- 如何批量给数字前面加半角单引号[转]
- [二分查找] 二:二分查找的经典例题
- asp网页设计流量统计代码
- 《算法竞赛入门经典》第三章 3.4
- hadoop 单机伪分布式安装步骤
- Matlab符号数学(Symbolic Math with MATLAB)MATLAB解方程
- indesign教程,如何创建对齐参考线?
- java多线程通信 例子
- Webpack框架知识整理——Modules
- 4-1.最大子数组分治法实现
- rpc接口和http接口的区别和联系1 什么是http接口http接口是基于http协议的post和get接口。2 什么是rpc接口rpc接口就相当于调用本地接口一样调用远程服务的接口。
- De4Dot+Reflector 支持多种反混淆
- 关于 HSF框架 (一)简单介绍
- 记一次简单的burpsuite弱口令爆破实验
- 什么是生成器 — 一篇文章让你看懂
- 模型包装,答辩吹牛方法论!
- android+获取电池信息,Delphi XE5 Android应用程序获取电池信息
- 【CTF WriteUp】2020电信和互联网行业赛个人赛部分Crypto题解
热门文章
- Python 3 字符串 split( ) 方法
- linux 查看ip
- Xcode 8.0 Beta发布,详解Swift语言的重大变化
- oracle版本区别 win7_Oracle在Win7服务管理中消失的解决方法
- 2022芒果TV算法赛_用户下一个观看视频预测_baseline_CF召回YoutubeDNN
- 瘦了红颜, 多了寂寞
- java获取docx_java使用poi读取doc和docx文件的实现示例
- Android闪闪发光字体
- 微软拼音中设置小鹤双拼
- apache启动服务失败