手动单击 Android Google Chrome 中的 link 与通过代码单击它的行为不同

Manually clicking a link in Android Google Chrome behaves differently than clicking it through code

我的 html 中有这个锚标签,应该下载 PDF:

<a id="download" href="https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf">
  Download
</a>

这是我的脚本:

document.getElementById('download').click();

link 工作正常,正在按预期下载 PDF。我没有得到的是,在 Android Google Chrome (或任何其他基于 Chromium 的移动浏览器)中,如果我手动按下 link 它会打开我的 PDF 查看器应用程序马上,但如果我尝试让代码自动单击 link(如上面的代码所示),它只会在后台下载 PDF,而无需打开我的 PDF 查看器应用程序。

所需的行为应该是第一个,因为当我手动按下 link 时,它应该打开 PDF 查看器应用程序。我怎样才能通过代码来实现呢?知道为什么会这样吗?

您可以检查此 link 上的行为:https://802753.playcode.io

或查看此处的代码段:https://playcode.io/802753

如果那是预期的行为,谁能告诉我有关它的任何资源?我不知道还能去哪里搜索...

试试这个

<a [attr.href]="link" download="filename.pdf">Download</a>

其他


<a (click)="download(link)" >Download</a>

public download(link){
          var a = document.createElement('a');
          a.href = link;
          a.target = "_blank";
          a.download = link.split('/').pop();
          document.body.append(a);
          a.click();
          document.body.removeChild(a);
}

显然,正如@Armaggheddon 所说,这是一种预期的 Android Chromium 行为,您可以在这些链接中看到:javascript mailto not working in chrome mobile browser and https://bugs.chromium.org/p/chromium/issues/detail?id=477456#c5

因为他们太老了(2014-2015),我欢迎你们有任何消息。