由于个别浏览器对广告过滤或安全性做的比较严格,会认为window.open()打开的是小广告或者病毒网站,所以就会将其拦截。
解决方案:
不使用window.open(),使用iframe标签在本页面打开下载,这样就绕过安全拦截。
调用:iframeDownload(url)
代码:
function iframeDownload (url) {
const iframe = document.createElement('iframe')
iframe.style.display = 'none'
function iframeLoad () {
console.log('iframe onload')
const win = iframe.contentWindow
const doc = win.document
if (win.location.href === url) {
if (doc.body.childNodes.length > 0) {
// response is error
}
iframe.parentNode.removeChild(iframe)
}
}
if ('onload' in iframe) {
iframe.onload = iframeLoad
} else if (iframe.attachEvent) {
iframe.attachEvent('onload', iframeLoad)
} else {
iframe.onreadystatechange = function onreadystatechange () {
if (iframe.readyState === 'complete') {
iframeLoad()
}
}
}
iframe.src = ''
document.body.appendChild(iframe)
setTimeout(function loadUrl () {
iframe.contentWindow.location.href = url
}, 50)
}