window.open下载后跟window.location更改不下载

问题描述 投票:0回答:1

在我的应用程序的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>

这种情况一直持续到几个月前。现在它只能工作五次或十次。我试过延迟位置变化等,但它没有效果。

javascript http browser window.open window.location
1个回答
1
投票

这感觉很奇怪。您可能想要做的是构建一个<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)它是一个普通的链接(再次=)所以它被添加到浏览历史记录中浏览器也是自动的。

© www.soinside.com 2019 - 2024. All rights reserved.