2010-05-20 5 views

Odpowiedz

4

Znalazłem następujące rozwiązanie:

  1. Skonfiguruj plik manifestu do zdefiniowania skrypt treści, która jest dodawana do każdej strony, a osobną stronę tła.
  2. 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.
  3. 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({}); 
    }); 
0

Będziesz musiał uchwycić onkeypress na elemencie dokumentu za pomocą własnego obsługi zdarzeń, należy sprawdzić, czy event.keyCode = „C” (lub kodu ASCII) i że event.ctrlKey = true

Jeśli jest to prawidłowe, to prawdopodobnie użytkownik skopiował tekst na bieżącej stronie.

Trzeba będzie również uchwycić tab.updated zdarzenie, aby wiedzieć, kiedy należy wiązać onkeypress wydarzenie.

+0

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

0

Google Chrome Extensions ma eksperymentalne API do użycia, który pozwoli Ci wykonać kopiowania, wycinania i wklejania. Obecnie istnieje w wersji beta, więc bardzo szybko zostanie usunięty z wersji eksperymentalnej i stanie się stabilny.

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

+0

Świetne znalezisko - nie wiedziałem o eksperymentalnym interfejsie API. Niestety, wygląda na to, że ten interfejs API włącza rozszerzenie tylko do * wykonania * kopii. Poszukuję sposobu powiadomienia *, gdy użytkownik zainicjuje kopię. – bjoern

+0

Nie można tego zrobić z rozszerzeniami – BrunoLM

+0

Aby wykonać kopiowanie/wklejenie/wycinanie w rozszerzeniach, należy użyć interfejsu API schowka, o którym pisałem powyżej. Jeśli chcesz słuchać, gdy użytkownik inicjuje kopię, nie możesz tego zrobić z rozszerzeniami.Ponieważ interfejs API schowka jest eksperymentalny, możesz wysyłać swoje obawy, dlaczego potrzebne jest odsłuchiwanie wydarzeń związanych z kopiowaniem. Możesz wysłać swoją wiadomość e-mail do grupy [email protected]: http://groups.google.com/a/chromium.org/group/chromium-extensions/topics –

Powiązane problemy