我想从我正在创建的chrome扩展中将一些数据写入clipborad。 在清单文件中,我为 clipboardRead和clipboardWrite提供了权限。
我使用这个功能,我发现here
但它不起作用。好像是“document.execCommand('copy');”无法工作。
我在内容脚本中编写了所有这些代码。
THX 清单:
{
"manifest_version":2,
"name":"easyCopy",
"description":"just a small toll",
"version":"1.0.0",
"permissions":[
"clipboardWrite", "http://*/*", "clipboardRead"
],
"content_scripts":[
{
"matches":["http://*/*"],
"js":["jquery-1.9.1.min.js", "main_feature.js"]
}
],
"background":{
"persistent":false,
"page":"background.html"
}
}
main_feature.js:
copyOrderId();
function copyOrderId() {
$(".order-num").click(function () {
var curOrderNum = $(this).text();
copyTextToClipboard(curOrderNum);
// chrome.extension.sendMessage({method:"copy", content:curOrderNum}, function (response) {
// clog(response);
// });
});
}
function copyTextToClipboard(text) {
var copyFrom = $('<textarea/>');
copyFrom.text(text);
$('body').append(copyFrom);
copyFrom.select();
document.execCommand('copy', true);
copyFrom.remove();
}
function clog(message) {
console.log(message);
}
background.html只是一个带有基本html主体的空白页面。
答案 0 :(得分:8)
谢谢大家,我最终使用了这个:
document.execCommand
无法在内容脚本中使用。
相反,我将数据发送到后台页面,然后运行“copyTextToClipboard”功能。
请注意,您必须将JavaScript放入单个.js文件中,而不是将其与background.html混合使用。
此外,textarea必须具有id
或class
属性。