踩坑日记:在Google Chrome中使用window.open(url)下载导出文件时,打开窗口闪退并未成功导出文件。查找原因并解决问题
背景
window.open(policyUrl)
直接使用window.open打开新窗口导出,正常情况下会成功导出并自动关闭新窗口; 然而现在的情况是新窗口打开后新窗口闪退且文件未成功导出
问题
新窗口闪退且文件未成功导出
原因
window.open(policyUrl, '_top')
给window.open()添加第二个参数 _top 后控制台会返回报错
大概意思就是这是一个混合网站:打开的网站是 HTTPS 加密协议加载的,但是文件url是HTTP不安全协议连接重定向的,该文件应该通过 HTTPS 提供。
参考文件:blog.chromium.org/2020/02/pro…
解决问题
// 使用replace把http换成https即可成功导出
const policyUrl1 = policyUrl.replace('http', 'https')
if (policyUrl1) {
window.open(policyUrl)
}