使用document.createElement('a')创建变量并对其应用单击而不将其附加到DOM

时间:2014-05-18 13:58:21

标签: javascript jquery html5 dom download

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

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

但是如何在上执行点击事件而不将其添加/添加到DOM ?我的意图非常简单。我想让用户下载一个文件而不是在浏览器中打开它,这就是为什么我要避免使用window.location = '/files/target.pdf';函数。

请帮帮我。

感谢。

1 个答案:

答案 0 :(得分:7)

好吧,你可以像这样触发“点击”:

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似乎做了“正确”的事情,即显示“保存...”对话框。)