愛と勇気と缶ビール

ふしぎとぼくらはなにをしたらよいか

Chrome extensionでclipboardに文字列をコピー (2014/01/26時点)

なんか、やろうと思ってググったらみんな色々なこと書いてて何が正しいのかよくわからん!ムキー!ってなったので同じような人を救うために2014年1月時点での方法をメモ。あまり大した内容ではない。

manifest.json

現時点で必要なのは "clipboardRead" というpermission。以下は例。

{
    "manifest_version": 2,
    "name": "Are",
    "version": "1.0",
    "description": "Are, aredesu",
    "permissions": [
        "clipboardRead"
    ]
}

pasteの仕方

background page (event page) にて、以下のような関数を書いておいてstringを渡せばOK。 ちなみに、textAreaはdisplay:none;とかだとダメです。これには由縁がありそうだが、あまり深追いするメリットなさそうなので「表示はさせた上で要素を飛ばせば大丈夫」くらいの認識で済ませた。

    function saveToClipboard(str) {
        var textArea = document.createElement("textarea");
        textArea.style.cssText = "position:absolute;left:-100%";

        document.body.appendChild(textArea);

        textArea.value = str;
        textArea.select();
        document.execCommand("copy");

        document.body.removeChild(textArea);
    }

じゃあの。