Как я мог бы обнаружить, что пользователь выбрал и скопировал некоторое содержание на в настоящее время активной вкладке в Расширении Google Chrome?
Кажется, что нет никаких подходящих Событий, которые имеют дело с Буфером обмена в chrome.tabs или chrome.windows.
Существует ли способ обнаружить такие действия через Сценарии Содержания?
Я нашел следующее решение:
Небольшой рабочий пример:
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({});
});
Вам нужно будет зафиксировать onkeypress в элементе документа с помощью вашего собственного обработчика событий, проверить, что event.keyCode = 'C' (или код ascii) и что event.ctrlKey = true
Если это действительно так, то вероятно, что пользователь скопировал текст на текущую страницу.
Вам также потребуется захватить событие tab.updated, чтобы вы знали, когда связывать событие onkeypress.
В Google Chrome Extensions есть экспериментальный API, который вы можете использовать, который позволит вам выполнять копирование, вырезание и вставку. В настоящее время он существует в бета-версии, поэтому очень скоро он перейдет из экспериментальной в стабильную.
http://code.google.com/chrome/extensions/dev/experimental.clipboard.html