Chrome扩展程序:复制文字

时间:2012-01-09 20:19:33

标签: google-chrome-extension

我有一个简单的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时,我的剪贴板中没有任何新内容。关于这里出了什么问题的任何想法?输入肯定有我想要的文本,我在清单中有权限。任何帮助将不胜感激......

1 个答案:

答案 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只是为了强迫我们做这个愚蠢的解决方法?)但是哦,这就足够了暂时