Расширения Google Chrome: Как обнаружить действие Копии (Ctrl-C и Копия Редактирования)?

Как я мог бы обнаружить, что пользователь выбрал и скопировал некоторое содержание на в настоящее время активной вкладке в Расширении Google Chrome?

Кажется, что нет никаких подходящих Событий, которые имеют дело с Буфером обмена в chrome.tabs или chrome.windows.

Существует ли способ обнаружить такие действия через Сценарии Содержания?

6
задан bjoern 25 May 2010 в 22:57
поделиться

3 ответа

Я нашел следующее решение:

  1. Настройте файл манифеста для определить сценарий содержимого, который добавляется на каждую страницу, и отдельную фоновую страницу.
  2. В файле Content Script .js добавьте прослушиватель событий для события «копирование» либо для документа, либо для окна. Этот прослушиватель событий вызывается всякий раз, когда пользователь инициирует действие копирования.
  3. Поскольку сценарии содержимого существуют в изолированной программной среде безопасности (например, без межсайтовых запросов XMLHttpRequests), мы, вероятно, захотим отреагировать на событие на фоновой странице. Для этого используйте API передачи сообщений Chrome, чтобы отправить сообщение на фоновую страницу.

Небольшой рабочий пример:

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({});
  });
8
ответ дан 16 December 2019 в 21:35
поделиться

Вам нужно будет зафиксировать onkeypress в элементе документа с помощью вашего собственного обработчика событий, проверить, что event.keyCode = 'C' (или код ascii) и что event.ctrlKey = true

Если это действительно так, то вероятно, что пользователь скопировал текст на текущую страницу.

Вам также потребуется захватить событие tab.updated, чтобы вы знали, когда связывать событие onkeypress.

0
ответ дан 16 December 2019 в 21:35
поделиться

В Google Chrome Extensions есть экспериментальный API, который вы можете использовать, который позволит вам выполнять копирование, вырезание и вставку. В настоящее время он существует в бета-версии, поэтому очень скоро он перейдет из экспериментальной в стабильную.

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

0
ответ дан 16 December 2019 в 21:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: