美文网首页
js window.open()下载被拦截解决方案

js window.open()下载被拦截解决方案

作者: 周郭郭先生 | 来源:发表于2019-11-07 15:42 被阅读0次

由于个别浏览器对广告过滤或安全性做的比较严格,会认为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)

}

相关文章

网友评论

      本文标题:js window.open()下载被拦截解决方案

      本文链接:https://www.haomeiwen.com/subject/lyjvbctx.html