Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用document.createElement(';a';)创建一个变量,并单击该变量而不将其附加到DOM_Javascript_Jquery_Html_Dom_Download - Fatal编程技术网

Javascript 使用document.createElement(';a';)创建一个变量,并单击该变量而不将其附加到DOM

Javascript 使用document.createElement(';a';)创建一个变量,并单击该变量而不将其附加到DOM,javascript,jquery,html,dom,download,Javascript,Jquery,Html,Dom,Download,我正在使用jQuery/Javascript创建一个锚元素。我使用的方法是: var a = document.createElement('a'); a.href = '/files/target.pdf'; a.download = true; 但是,如何在不将其附加/预加到DOM的情况下对其执行单击事件呢?我的意图很简单。我想让用户下载一个文件,而不是在浏览器中打开它,这就是为什么我想避免使用window.location='/files/target.pdf'函数 请帮帮我 谢谢。好吧

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

var a = document.createElement('a');
a.href = '/files/target.pdf';
a.download = true;
但是,如何在不将其附加/预加到DOM的情况下对其执行单击事件呢?我的意图很简单。我想让用户下载一个文件,而不是在浏览器中打开它,这就是为什么我想避免使用
window.location='/files/target.pdf'函数

请帮帮我

谢谢。

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

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似乎做了一件“正确”的事情,那就是显示一个“保存…”对话框。)

为什么要避免设置
窗口。位置
?是什么让您认为触发对
的“单击”不会以完全相同的方式进行?单击是在代码中触发还是使用window.location都不会有任何区别。@Pointy,因为它在浏览器窗口中打开文件,不允许用户下载。HTML5的“下载”属性允许用户下载文件。@Phoenix-hmm;这不在HTML5规范中。除了Firefox之外,还有其他浏览器实现它吗?(也可以编辑oh Chrome。)@Pointy锚元素,如
,可以下载文件。如果您实际上想要更改文件名,那么使用此选项听起来很棒。这些代码适用于Firefox、Chrome、Opera等。但对于Firefox,href属性不得包含来自其他服务器的链接。在这种情况下,文件将被下载,不下载thag,浏览器将打开该图像。此代码也适用于音频和视频。浏览器将下载它们而不是播放。非常感谢。如果
href
属性包含“http://”以从不同的源/网站获取内容,Firefox不允许用户利用
下载
属性。如果您像这样使用
href
/files/file.png
并在锚定中应用
下载
属性,Firefox也将显示保存对话框,而不是打开它。:)