Znalazłem następujące rozwiązanie:
- Skonfiguruj plik manifestu do zdefiniowania skrypt treści, która jest dodawana do każdej strony, a osobną stronę tła.
- W pliku .js zawartości Script, dodać detektor zdarzeń dla zdarzenia „Kopiuj”, albo do dokumentu lub okna. Ten detektor zdarzeń jest wywoływany za każdym razem, gdy użytkownik inicjuje akcję kopiowania.
- Skrypty zawartości istnieją w bezpiecznym obszarze izolowanym (np. Bez żądań cross-site XMLHttpRequests), dlatego chcemy odpowiedzieć na zdarzenie na stronie w tle. Aby to zrobić, użyj interfejsu API przekazywania wiadomości Chrome, aby wysłać wiadomość na stronę w tle.
Mały przykład praca:
manifest.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({});
});
Dzięki, że to dobry początek do wykrywania zdarzeń kopiowania wykonywanych za pomocą skrótów klawiaturowych. Prawdopodobnie będę potrzebował innego mechanizmu wykrywania menu Edycja-> wywołania kopii, poza JavaScript. – bjoern