7

作成しているChrome拡張機能からclipboradにデータを書き込みたいです。マニフェストファイルで、clipboardReadとclipboardWriteの両方に権限を付与しました。

ここで見つけたこの関数を使用します

しかし、それは機能しません。「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本文を含む単なる空白のページです。

4

1 に答える 1

8

みんなありがとう、私はこれを使うことになった:

document.execCommandコンテンツスクリプトでは機能しません。代わりに、バックグラウンドページにデータを送信してから、「copyTextToClipboard」関数を実行します。

JavaScriptをbackground.htmlと混合するのではなく、単一の.jsファイルに入れる必要があることに注意してください。

さらに、textareaにはidorclassプロパティが必要です。

于 2013-02-26T02:32:01.047 に答える