在我的应用程序的JavaScript中,我们运行window.open(location1)
,然后是window.location = location2
,似乎9次中有10次window.open
从未发生过。这与应该发生的情况形成对比,位置更改不应该停止执行。这种情况发生在Chrome和Safari中。
导出按钮链接到包含以下内容的页面。它首先打开自己的url,这次使用action=go
来触发为文件设置的实际下载头等。然后它将位置更改回原始页面。
<script>
window.onload = function() {
window.open(window.location + '&action=go', '_blank');
window.location = '{{ original_url }}';
};
</script>
这种情况一直持续到几个月前。现在它只能工作五次或十次。我试过延迟位置变化等,但它没有效果。
这感觉很奇怪。您可能想要做的是构建一个<a>
,设置其所有值,包括“在新选项卡中打开”指令,在页面准备好后将其添加到正文,然后单击并删除它:
const loadSecondary = () => {
let secondary = document.createElement(`a`);
secondary.style.display = `none`;
secondary.setAttribute(`target`, `_blank`);
secondary.href = ...
document.body.appendChild(secondary);
secondary.click();
document.body.removeChild(secondary);
};
document.addEventListener(`DOMContentLoaded`, loadSecondary);
这样做的好处是(a)它是一个普通的链接,所以你不必处理window.open参数和弹出窗口阻塞,以及(b)它是一个普通的链接(再次=)所以它被添加到浏览历史记录中浏览器也是自动的。