我正在努力将图片从Chrome应用中复制到剪贴板。请注意,我是专门针对新的Chrome应用程序(以前称为Chrome打包应用程序)而不是Chrome扩展程序或Chrome中的常规网页提出的。
我已经要求" clipboardWrite"和" clipboardRead" manifest.json中的权限
"permissions": [
{"fileSystem": ["write", "retainEntries", "directory"]},
"https://www.google-analytics.com/",
"storage",
"clipboardWrite",
"clipboardRead"
],
基于相关的"将图像复制到剪贴板"关于StackOverflow的问题,我尝试了4种不同的方法。
function onClickButton() {
document.oncopy = function(event) {
var dataURL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAGElEQVQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPAAAAAElFTkSuQmCC";
// base64 decode the data url, skipping the data url prefix
var data = atob(dataURL.substring("data:image/png;base64,".length));
// copy the decoded data to an binary array
var dataArray = new Uint8Array(data.length);
for (var i = 0; i < data.length; i++) {
dataArray[i] = data.charCodeAt(i);
}
// approach 1 - failed, pastes nothing
event.clipboardData.setData('image/png', dataArray);
// approach 2 - failed, pastes nothing
event.clipboardData.setData('text/uri-list', dataURL);
// approach 3 - failed, ends up pasting the text "image.png"
var file = new File(dataArray, "image.png", {type: "image/png"});
event.clipboardData.items.add(file);
// approach 4 - failed, pastes nothing
event.clipboardData.items.add(dataURL, 'text/uri-list');
event.preventDefault();
};
document.execCommand("Copy");
}
此代码仅在未注释的4种方法中的1种中运行。有一种方法有效吗?仅供参考,方法1适用于&#34; text / plain&#34;和一些示例文本。所以我有理由相信,至少那种方法可以与那些做某事的API一起使用。