7

我想从我正在创建的 chrome 扩展中将一些数据写入剪贴板。在清单文件中,我授予了clipboardRead 和clipboardWrite 的权限。

我使用我在这里找到的这个功能

但它不起作用。似乎“document.execCommand('copy');” 不能工作。

我在内容脚本中编写了所有这些代码。

谢谢清单:

{
    "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 正文的空白页面。

4

1 回答 1

8

谢谢大家,我最终使用了这个:

document.execCommand不能在内容脚本中工作。相反,我将数据发送到后台页面,然后运行“copyTextToClipboard”函数。

请注意,您必须将 JavaScript 放入单个 .js 文件中,而不是将其与 background.html 混合。

此外,textarea 必须具有idorclass属性。

于 2013-02-26T02:32:01.047 回答