手动单击 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),我欢迎你们有任何消息。
我的 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),我欢迎你们有任何消息。