为什么只有第二个 .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()
我这里有两段代码,但只有第一段运行正常。我不确定为什么。它与 "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()