我不是百分百肯定如何描述这个,所以我只需粘贴三段相关代码。
我能够做到这一点:
var dl = $('<a>',{
style: 'display: none',
download: this.name + '.txt',
href: window.URL.createObjectURL(data, {type: "octet/stream"}))
});
dl[0].click();
我可以这样做:
copydeck = $("<textarea>").val(this.list.join("\r\n"));
$('body').append(copydeck);
copydeck.select();
document.execCommand('copy');
copydeck.remove();
但我不能这样做:
copydeck = $("<textarea>").val(this.list.join("\r\n"));
copydeck[0].select();
document.execCommand('copy');
为什么呢?我在这里错过了什么?我无法选择或复制不在DOM中的元素吗?有没有办法在不将物体附加到身体的情况下这样做?
答案 0 :(得分:2)
为什么呢?我在这里缺少什么?
textarea
中的document
并非document.execCommand('copy')
,因此呼叫textarea
不会对其进行操作。请记住,可能存在多个文档(与各种窗口相关,例如iframe),并且除非文档中包含元素,否则它...不在文档中。
您可以附加textarea
,发出命令,然后将其删除,而不会在显示中出现任何问题。也就是说,对于我在Linux上使用Chrome,您的代码最终不会将任何内容复制到剪贴板(无论我是从DOM中的click
开始还是稍后动态添加它),即使我放了它在{{1}}处理程序中(例如,直接响应用户事件)。