2017-02-15 3 views
-1

Я пытаюсь разработать расширение chrome, но при попытке добавить EventListener в действие копирования он не работает (хотя поддерживается браузером, потому что он работает над скрипка).JS - Chrome Extension - addEventListener ('copy') не работает

вот мои разные файлы.

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); 

Предупреждение никогда не выскочит.

Я также пробовал с аналогичным кодом в файле background.js, вызванном background.html, но не работал ни ... Любые идеи?

+0

Spec [говорит] (https://developer.mozilla.org/en-US/docs/Web/Events/copy) цель должна быть либо сам элемент или 'документ .body', а не только 'document'. – wOxxOm

+0

Пример в spec также с document.addEventListener: document.addEventListener ('copy', function (e) { e.clipboardData.setData ('text/plain', 'Hello, world!'); e.clipboardData. setData ('text/html', 'Hello, world!'); e.preventDefault(); // Мы хотим, чтобы наши данные, а не данные из любого выбора, были записаны в буфер обмена }); – Ivo

+0

Да, это работает на документе в Chrome, поэтому MDN там некорректен. Вы видите какие-либо ошибки в консоли? – wOxxOm

ответ

-1

Попробуйте

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

К сожалению, не работает, похоже, что это тот факт, что он находится в расширениях, которые блокируют его. – Ivo

+0

Вы можете отлаживать расширения отдельно, находили ли вы там какие-либо ошибки? – nivas

+0

Почему вы думаете, что это поможет? Слушатель событий помещается в 'document'. Узел 'document' не будет меняться между тем, когда запускается скрипт контента и когда запускается событие' DOMContentLoaded'. На самом деле это может привести к тому, что код не будет работать вообще. Скрипт содержимого в настоящее время 'run_at' по умолчанию' document_idle'. это означает, что он может быть добавлен после 'window.onload', который запускает * после *' DOMContentLoaded'. Таким образом, это делает его таким, что при некоторых условиях код 'document.addListener' никогда не будет запущен. – Makyen

Смежные вопросы