ユーザーがGoogleChrome拡張機能の現在アクティブなタブでコンテンツを選択してコピーしたことをどのように検出できますか?
chrome.tabsまたはchrome.windowsでクリップボードを処理する適切なイベントがないようです。
コンテンツスクリプトを介してそのようなアクションを検出する方法はありますか?
ユーザーがGoogleChrome拡張機能の現在アクティブなタブでコンテンツを選択してコピーしたことをどのように検出できますか?
chrome.tabsまたはchrome.windowsでクリップボードを処理する適切なイベントがないようです。
コンテンツスクリプトを介してそのようなアクションを検出する方法はありますか?
次の解決策を見つけました。
小さな実例:
マニフェスト.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({});
});
Google Chrome 拡張機能には、コピー、切り取り、貼り付けを実行できる実験的な API があります。現在はベータ ビルドに存在するため、すぐに実験的バージョンから安定版に移行する予定です。
http://code.google.com/chrome/extensions/dev/experimental.clipboard.html
独自のイベント ハンドラを使用してドキュメント要素の onkeypress をキャプチャし、event.keyCode = 'C' (または ASCII コード) と event.ctrlKey = true を確認する必要があります
これが有効な場合、ユーザーが現在のページのテキストをコピーした可能性があります。
onkeypress イベントをバインドするタイミングがわかるように、tab.updated イベントもキャプチャする必要があります。