2017-02-15 2 views
-1

Ich versuche eine Chrome-Erweiterung zu entwickeln, aber beim Versuch, einen EventListener hinzuzufügen, funktioniert die Kopie nicht (obwohl vom Browser unterstützt, weil er gerade arbeitet) Geige).JS - Chrome-Erweiterung - addEventListener ('copy') funktioniert nicht

Hier sind meine verschiedenen Dateien.

manifest.json

{ 
    "manifest_version": 2, 

    "name": "Bla", 
    "description": "bla", 
    "version": "1.0", 

    "browser_action": { 
    "default_icon": "camera.png", 
    "default_title": "bla" 
    }, 

    "background": { 
    "page": "background.html" 
    }, 

    "content_scripts" : [ 
    { 
     "matches": ["http://*/*", "https://*/*"], 
     "js": ["oncopy.js"] 
    } 
    ], 

    "permissions": [ 
    "activeTab", 
    "https://ajax.googleapis.com/", 
    "clipboardRead", 
    "clipboardWrite" 
    ] 
} 

oncopy.js

document.addEventListener("copy", function() { 
    alert('copied') 
    }, true); 

Die Warnung erscheint nie auf.

Ich versuchte auch mit einem ähnlichen Code innerhalb einer background.js Datei, die von background.html genannt wurde, aber auch nicht funktionierte ... Irgendwelche Ideen?

+0

Spec [sagt] (https://developer.mozilla.org/en-US/docs/Web/Events/copy) das Ziel sollte entweder das Element selbst oder 'Dokument sein .body', nicht nur 'document'. – wOxxOm

+0

Beispiel in der Spezifikation ist auch mit document.addEventListener: document.addEventListener ('Kopie', Funktion (e) { e.clipboardData.setData ('Text/plain', 'Hallo, Welt!'); e.clipboardData. setData ('text/html', 'Hallo, Welt!'); e.preventDefault(); // Wir wollen, dass unsere Daten, keine Daten aus einer Auswahl in die Zwischenablage geschrieben werden }); – Ivo

+0

Ja, es funktioniert auf einem Dokument in Chrome, so dass MDN dort falsch ist. Siehst du irgendwelche Fehler in der Konsole? – wOxxOm

Antwort

-1

Versuchen Sie, diese

document.addEventListener('readystatechange', function(evt) { 
    if (evt.target.readyState === "complete") { 
    document.addEventListener("copy", function() { 
     alert('copied') 
    }, true); 
    } 
}, false); 
+0

Leider nicht funktioniert, fühlt sich an, als ob es in den Erweiterungen ist, die es blockiert. – Ivo

+0

Sie können die Erweiterungen einzeln debuggen, haben Sie dort Fehler gefunden? – nivas

+0

Warum würden Sie denken, dass das helfen würde? Der Ereignis-Listener wird auf das 'Dokument' gesetzt. Der Knoten "document" wechselt nicht, wenn das Inhaltsskript ausgeführt wird und wenn das Ereignis "DOMContentLoaded" ausgelöst wird. Dies kann dazu führen, dass der Code überhaupt nicht ausgeführt wird. Das Inhaltsskript befindet sich momentan in "run_at" und ist standardmäßig "document_idle". das bedeutet, dass es * nach * window.onload' injiziert werden kann, das nach * 'DOMContentLoaded' ausgelöst wird. Dies macht es so, dass unter gewissen Bedingungen der 'document.addListener'-Code niemals ausgeführt wird. – Makyen

Verwandte Themen