为什么要去模拟window.open() 打开一个 新的窗口呢,因为有些浏览器默认会拦截 window.open, 当需要函数中打开新窗口时,接可以使用a标签去模拟打开。
/** * a模拟window.open,不会被浏览器拦截 * @param {String} url a标签打开的地址 * @param {String} id a标签的ID * @param {String} targetType a标签点击打开的方式(当前页面打开还是新窗口打开) */ openWindow: (url, targetType = '_blank', id = 'open', download = false) => { // 如果存在则删除 if (document.getElementById(id)) { document.body.removeChild(document.getElementById(id)) } const a = document.createElement('a') a.setAttribute('href', url) if (download) { a.setAttribute('download', url) } a.setAttribute('target', targetType) a.setAttribute('id', id) document.body.appendChild(a) a.click() }