使用document.createElement('a')创建一个变量,并在其上应用click,而不将其

Create a variable using document.createElement('a') and apply click on it without appending it to DOM

本文关键字:应用 click createElement document 创建 一个 使用 变量      更新时间:2023-09-26

我正在使用jQuery/Javascript创建一个锚元素。我正在使用这个方法:

var a = document.createElement('a');
a.href = '/files/target.pdf';
a.download = true;

但是我怎么能执行一个点击事件上它而不追加/前置到DOM?我的意图很简单。我想让用户下载文件,而不是在浏览器中打开它,这就是为什么我想避免window.location = '/files/target.pdf';函数。

请帮帮我。

谢谢。

你可以像这样触发"click":

var anchor = document.createElement('a');
anchor.href = 'http://gutfullofbeer.net/mozilla.pdf';
anchor.download = true;
var evt = document.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
anchor.dispatchEvent(evt);

但是,当我在Firefox中这样做时,我得到一个PDF文件,该文件显示在Firefox内置的PDF查看器中。(Chrome似乎做"正确"的事情,这是显示一个"保存…"对话框)