我有一个简单的chrome扩展名,我想点击图片并复制旁边链接的href。我已经掌握了一切,但副本对我的生活无效。我的清单中有以下提示:
“权限”:[ “clipboardRead” “clipboardWrite” ]
然后我创建一个id为“copyInp”的输入并使用以下函数复制到剪贴板(试图在这里尽可能谨慎,所以它不是最紧凑的):
function copyLinkToClipboard( link ) {
$("#copyInp").val(link);
var inp = document.getElementById("copyInp");
inp.focus();
inp.select();
document.execCommand('copy');
};
运行之后,当我按Ctrl + v时,我的剪贴板中没有任何新内容。关于这里出了什么问题的任何想法?输入肯定有我想要的文本,我在清单中有权限。任何帮助将不胜感激......
答案 0 :(得分:7)
经过一番挖掘,我发现我需要使用背景页面。显然,这是唯一可以调用document.execCommand的东西。所以解决方法是创建一个带有复制功能的background.html及其中的输入,添加一个如下的监听器:
chrome.extension.onRequest.addListener(function(obj) {
copyLinkToClipboard( obj.link );
});
然后使用sendRequest将要复制的文本传递给后台页面:
chrome.extension.sendRequest({link: linkText});
并且不要忘记在清单
中添加背景页面"background_page": "background.html",
瞧。文本复制到剪贴板。会喜欢更简单的方法(如果安全是问题,那么为什么不为扩展做api?或者更确切地说,为什么要废弃实验api只是为了强迫我们做这个愚蠢的解决方法?)但是哦,这就足够了暂时