Javascript 如何打开url并下载而不被阻止

Javascript 如何打开url并下载而不被阻止,javascript,reactjs,popupwindow,Javascript,Reactjs,Popupwindow,我有这样的想法: <a onClick={e => { getDownloadLink() .then(url => window.open(url)) }}>Download</a> {getDownloadLink() .then(url=>window.open(url))}>下载 getDownloadLink方法必须首先POST获取url,然后通过window.open(url)触发下载,但我发现浏

我有这样的想法:

<a 
  onClick={e => { getDownloadLink()
                     .then(url => window.open(url)) }}>Download</a>
{getDownloadLink()
.then(url=>window.open(url))}>下载
getDownloadLink
方法必须首先
POST
获取url,然后通过
window.open(url)
触发下载,但我发现浏览器会阻止
window.open
行为。我怎样才能防止呢


我在stackoverflow中看到很多类似的问题,但我仍然没有找到解决问题的方法。我发现aws s3页面做了类似的事情,页面不会被浏览器阻塞。所以我想一定有办法解决这个问题。

不要使用
窗口。打开
,只需让浏览器执行它已经知道的HTML操作:构建链接锚,然后单击它

// create an temporary, invisible link and open it in a new tab
function openURL(url) {
  var a = document.createElement("a");
  a.setAttribute("target", "_blank");
  a.href = url;
  a.style.display = "none";
  // you can't click a link unless it's part of the document:
  document.body.appendChild(a);
  a.click();
  document.body.removeChild(a);
}

通过这种方式,你告诉浏览器只需“以正常方式打开一个链接”,它会很高兴地这样做,而不是阻止有问题的API,这些API有用于弹出窗口和其他有问题的用途的历史。

不要使用
窗口。打开
,只需让浏览器做它已经知道的处理HTML的事情:构建链接锚,然后点击它

// create an temporary, invisible link and open it in a new tab
function openURL(url) {
  var a = document.createElement("a");
  a.setAttribute("target", "_blank");
  a.href = url;
  a.style.display = "none";
  // you can't click a link unless it's part of the document:
  document.body.appendChild(a);
  a.click();
  document.body.removeChild(a);
}
通过这种方式,你告诉浏览器只需“以正常方式打开一个链接”,它很乐意这样做,而不是阻止有问题的API,这些API有用于弹出窗口和其他有问题的用途的历史记录。

你说的“阻止”是什么意思。。。浏览器开发者工具控制台中是否有任何有用的错误消息/警告等?你说的“阻止”是什么意思。。。浏览器开发人员工具控制台中是否有任何有用的错误消息/警告等?