2010-05-20 10 views

Antwort

4

fand ich die folgende Lösung:

  1. eine Manifest-Datei Einrichten eines Content-Skript zu definieren, die auf jeder Seite hinzugefügt wird, und eine separate Hintergrundseite.
  2. Fügen Sie in der Datei "Content Script .js" einen Ereignis-Listener für das Ereignis "copy" entweder für das Dokument oder das Fenster hinzu. Dieser Ereignis-Listener wird aufgerufen, wenn der Benutzer eine Kopieraktion einleitet.
  3. Da Inhaltsskripts in einer Sicherheits-Sandbox vorhanden sind (z. B. keine Cross-Site-XMLHttpRequests), möchten wir wahrscheinlich auf der Hintergrundseite auf das Ereignis reagieren. Verwenden Sie dazu die Chrome Message Passing API, um eine Nachricht an die Hintergrundseite zu senden.

ein kleines Arbeitsbeispiel:

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

Sie Ihre eigenen Event-Handler zu erfassen haben onkeypress auf dem Dokumentelement verwenden, dass event.keyCode prüfen = ‚C‘ (oder den ASCII-Code), und dass die event.ctrlKey = true

Wenn dies gültig, dann ist es wahrscheinlich, dass der Benutzer Text auf der aktuellen Seite kopiert hat.

Sie müssen auch das Ereignis tab.updated erfassen, damit Sie wissen, wann das onkeypress-Ereignis gebunden werden muss.

+0

Danke, das ist ein guter Start für die Erkennung von Kopiervorgängen, die über Tastaturkürzel ausgeführt werden. Ich brauche wahrscheinlich einen anderen Mechanismus, um das Menü Bearbeiten-> Aufrufe kopieren außerhalb von Javascript zu erkennen. – bjoern

0

Google Chrome Extensions verfügt über eine experimentelle API, mit der Sie Kopien erstellen, ausschneiden und einfügen können. Es existiert derzeit im Beta-Build, also wird es bald aus dem Experiment heraus ins Stabile kommen.

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

+0

Toller Fund - ich war mir der experimentellen API nicht bewusst. Leider sieht es so aus, als ob diese API nur die Extension * zum Ausführen * einer Kopie ermöglicht. Ich bin auf der Suche nach einem Weg, * benachrichtigt * werden, wenn der Benutzer eine Kopie initiiert. – bjoern

+0

Sie können dies nicht mit Erweiterungen tun – BrunoLM

+0

Um Kopieren/Einfügen/Einschneiden Erweiterungen ausführen, verwenden Sie die Zwischenablage API wie ich oben erwähnt. Wenn Sie zuhören möchten, wenn der Benutzer eine Kopie initiiert, können Sie dies nicht mit Erweiterungen tun.Da die Zwischenablage-API experimentell ist, können Sie Ihre Bedenken senden, warum das Abhören von Kopierereignissen erforderlich ist. Sie können Ihre E-Mail an die Gruppe [email protected] senden: http://groups.google.com/a/chromium.org/group/chromium-extensions/topics –