js 模拟window.open 打开新窗口 - sjpqy

时间:2024-03-11 15:56:27

js 模拟window.open 打开新窗口

为什么要去模拟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()
}