大部分现代的浏览器(Chrome/Firefox/IE 10+/Safari)都默认开启了阻止弹出窗口的策略,原因是window.open被广告商滥用,严重影响用户的使用。这个阻止弹窗的操作,并不是封杀了window.open(),而是根据用户的行为来判断此次open是否属于流氓操作。
如果是用户出发的动作所引起的window.open(),浏览器不会阻止。但是写在 onclick 这些事件 handler 里的,但如果是代码自己触发的就会被阻止。
那么,在safire中无法打开open新窗口,是因为safire的安全机制将其阻挡。只要不是用户发起的操作的都会被阻止。
解决方法:
1,window.location.replace() 但是不能打开新窗口
2,回调函数中生成一个链接,让用户点击一下
3,在回调函数之前加一个新窗口,然后再回调函数中设置他的location
var winRef = window.open('','_blank');
this.$axios
.post("url", {
resource_id: resource_id,
})
.then((res) => {
if (res.code == 200) {
winRef.location = res.data.playbackUrl;
}
});