使用window.open 打开多个标签页,浏览器默认是禁止该行为的,浏览器会认为是广告等就会拦截。
第一点,我们需要使用setTimeout 进行宏任务处理,因为短时间内打开多个标签页,浏览器依旧会拦截,最后只打开一个。
第二点:window.open的第二个参数必须是动态的,效果跟_blank是一样的
const urlList = ['https://www.baidu.com/','https://www.baidu.com/','https://www.baidu.com/']
urlList.forEach((item, index) => {
setTimeout(() => {
window.open(item, `one${index}`)
this.printOrderDialogShow = false
}, 0)
链接:Window open() 方法 | 菜鸟教程
此时运行代码,浏览器会弹窗该弹窗,我们要选择始终允许才可以。
如果大家不慎选择了继续拦截。我们则需要再设置-隐私和安全-弹出式窗口和重定向。找到域名,把权限修改为允许即可。
var handleClick = function(){
window.open("a.html","name1");
window.open("b.html","name2");
}触发handleClick函数后,只会打开页面a;
只有回到之前的页面。且a页面没有被用户关闭的情况下,再次触发才会
二 业务场景
说一下我的业务场景:我发送一个文本给后台,后台返回三个URL给我,然后我要在页面打开三个窗口,然后数据更新我还要在第一次打开的三个窗口刷新数据,也就是我只能打开三个窗口。
三 上代码
稍微臭屁几句,我这里写了三个路由跳转然后iframe src...
window.opener='';
//window.close();
var win = window.open("http://10.121.164.12/login!login.action?yh.jh=33059363&yh.mm=654321&type=jwzh","first");
setTimeout("window.open(\"http://1
使用window.open方式打开A页面,A页面打开B页面,B页面打开C页面,C页面打开D页面,D页面打开E页面,在E页面关闭时执行以上任意页面中的函数解决方案;
在E页面关闭时使用window的localStorage属性,创建一个key/value键值对,在需要执行函数的页面比如A页面监听localStorage,获取在E页面设置的键值对进行判断,然后即可执行本页面的函数,具体代码如下:
E页面关闭页面时代码:
localStorage.clear();
ocalStorage.setItem(‘fla
window.open(url, name, features, replace)
Arguments - 参数 url
可选字符串参数,指向要在新窗口中显示的文档的URL。如果省略该参数,或者参数为空字符串,新窗口不会显示文档。
可选字符串参数,该参数可以设置新窗口的名称。
相同name的窗口只能创建一个,要想创建多个窗口则name不能相同。