7

ユーザーがGoogleChrome拡張機能の現在アクティブなタブでコンテンツを選択してコピーしたことをどのように検出できますか?

chrome.tabsまたはchrome.windowsでクリップボードを処理する適切なイベントがないようです。

コンテンツスクリプトを介してそのようなアクションを検出する方法はありますか?

4

3 に答える 3

11

次の解決策を見つけました。

  1. マニフェスト ファイルを設定して、すべてのページに追加されるコンテンツ スクリプトと個別の背景ページを定義します。
  2. Content Script .js ファイルで、ドキュメントまたはウィンドウの「copy」イベントのイベント リスナーを追加します。このイベント リスナーは、ユーザーがコピー アクションを開始するたびに呼び出されます。
  3. コンテンツ スクリプトはセキュリティ サンドボックスに存在するため (たとえば、クロスサイト XMLHttpRequests はありません)、おそらくバックグラウンド ページでイベントに応答する必要があります。そのためには、Chrome メッセージ パッシング API を使用して、バックグラウンド ページにメッセージを送信します。

小さな実例:

マニフェスト.json

{
  "background_page": "background.html",
  "content_scripts": [
      {
        "matches": ["http://*/*"],
        "js": ["oncopy.js"]
      }
    ]
}

oncopy.js

// on copy event, send a message to background.html
function onCopy(e) { 
    chrome.extension.sendRequest({event: "copy"});
}

//register event listener for copy events on document
document.addEventListener('copy',onCopy,true); 

background.html

chrome.extension.onRequest.addListener(
  function(request, sender, sendResponse) {
    if (request.event == "copy") {
       alert("copy detected");
    }
    sendResponse({});
  });
于 2010-05-27T05:30:55.990 に答える
0

Google Chrome 拡張機能には、コピー、切り取り、貼り付けを実行できる実験的な API があります。現在はベータ ビルドに存在するため、すぐに実験的バージョンから安定版に移行する予定です。

http://code.google.com/chrome/extensions/dev/experimental.clipboard.html

于 2010-05-25T23:27:06.690 に答える
0

独自のイベント ハンドラを使用してドキュメント要素の onkeypress をキャプチャし、event.keyCode = 'C' (または ASCII コード) と event.ctrlKey = true を確認する必要があります

これが有効な場合、ユーザーが現在のページのテキストをコピーした可能性があります。

onkeypress イベントをバインドするタイミングがわかるように、tab.updated イベントもキャプチャする必要があります。

于 2010-05-24T18:58:15.857 に答える