踩坑日记之Google Chrome中使用window.open(url)闪退

522 阅读1分钟

踩坑日记:在Google Chrome中使用window.open(url)下载导出文件时,打开窗口闪退并未成功导出文件。查找原因并解决问题

背景

window.open(policyUrl)

直接使用window.open打开新窗口导出,正常情况下会成功导出并自动关闭新窗口; 然而现在的情况是新窗口打开后新窗口闪退且文件未成功导出

问题

新窗口闪退且文件未成功导出

原因

 window.open(policyUrl, '_top')

给window.open()添加第二个参数 _top 后控制台会返回报错 image.png 大概意思就是这是一个混合网站:打开的网站是 HTTPS 加密协议加载的,但是文件url是HTTP不安全协议连接重定向的,该文件应该通过 HTTPS 提供。

参考文件:blog.chromium.org/2020/02/pro…

解决问题

// 使用replace把http换成https即可成功导出

const policyUrl1 = policyUrl.replace('http', 'https')
if (policyUrl1) {
   window.open(policyUrl)
}