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