为什么只有第二个 .click() 起作用?

Why is only the second .click() working?

我这里有两段代码,但只有第一段运行正常。我不确定为什么。它与 "download" 属性有关吗?为什么?或者,是因为 dl 没有正确引用正确的对象吗?这里很困惑,现在已经进行了一两个小时了。

(另外,有没有一种方法可以单击对象而不将其附加到 DOM?我猜不会。)

// WORKING
var a = document.createElement("a");
a.style = "display: none";
a.href = window.URL.createObjectURL(new Blob([this.list.join("\r\n")], {type: "octet/stream"}));
a.download = fileName;
a.click();
window.URL.revokeObjectURL(a.href);

// NOT WORKING
var dl = $('<a>',{
  style: 'display: none',
  download: fileName,
  href: window.URL.createObjectURL(new Blob([this.list.join("\r\n")], {type: "octet/stream"}))
});
$('body').append(dl);
dl.click();
window.URL.revokeObjectURL(dl.href);

第一个是一个 DOM 对象,它有一个 click 方法,第二个是一个 jQuery 对象,它的行为类似于一个数组 - 获得第一个 DOM数组中的元素,就像使用 dl[0] 读取任何普通的 javascript 数组一样。然后你可以在这个对象上调用 click 方法,它不需要添加到 DOM.

dl[0].click()