4

Ctrl + Aを押してから現在のタブをクリップボードにコピーするのと同じように、ページ全体をコピーする方法を誰かに教えてもらえますか。

現在私はこれを持っていますが、拡張機能がchromeに正常に追加されましたが、何もしていません:

マニフェストファイル

"permissions":
[
   "clipboardRead",
   "clipboardWrite"
],
// etc

コンテンツスクリプト

chrome.extension.sendRequest({ text: "text you want to copy" });

背景ページ

<html>
 <head>
 <script type="text/javascript">
   chrome.extension.onRequest.addListener(function (msg, sender, sendResponse) {

      var textarea = document.getElementById("tmp-clipboard");

      // now we put the message in the textarea
      textarea.value = msg.text;

      // and copy the text from the textarea
      textarea.select();
      document.execCommand("copy", false, null);


      // finally, cleanup / close the connection
      sendResponse({});
    });
  </script>
  </head>

  <body>
    <textarea id="tmp-clipboard"></textarea>
  </body>
</html>

現れる

<textarea id="tmp-clipboard"></textarea>
<input type="button" id="btn" value="Copy Page">

私はこれを機能させることができません、私がここで何が欠けているのか疑問に思います。

現在のタブをクリップボードに保存するために、Ctrl+のA後にCtrl+を模倣する方法を教えてもらえますか?C

4

1 に答える 1

6

コードに複数の問題があります

  • Chrome 20以降、sendRequestは廃止され、sendMessageが優先されます
  • Chrome 20以降、onRequest.addListenerは廃止され、onMessage.addListenerが採用されました。
  • CSPのため、コードにタグを含めることはできません

これらの問題を排除した後、コードは期待どおりに機能します。

デモンストレーション

ユースケースのサンプルデモ

マニフェスト.json

マニフェストにすべての権限と登録があることを確認

{
"name":"Copy Command",
"description":"http://stackoverflow.com/questions/14171654/chrome-extension-how-to-select-all-text-of-tab-and-copy",
"version":"1",
"manifest_version":2,
"background":{
    "page":"background.html"
},
"permissions":
[
   "clipboardRead",
   "clipboardWrite"
],
"content_scripts":[
{
"matches":["<all_urls>"],
"js":["script.js"]
}
]
}

background.html

すべてのセキュリティ変更を尊重することを確認しました

<html>
<head>
<script src="background.js"></script>
</head>
<body>
<textarea id="tmp-clipboard"></textarea>
</body>
</html>

background.js

Ctrl+ACtrl+をシミュレートするリスナーを追加しましたC

chrome.extension.onMessage.addListener(function (msg, sender, sendResponse) {
    //Set Content
    document.getElementById("tmp-clipboard").value = msg.text;
    //Get Input Element
    document.getElementById("tmp-clipboard").select();

    //Copy Content
    document.execCommand("Copy", false, null);
});

contentscript.js

コピーするコンテンツを渡す

chrome.extension.sendMessage({ text: "text you want to copy" });

参考文献

于 2013-01-05T14:00:54.783 に答える