Расширение Google Chrome - есть ли способ добавить слушателя к событию выбора / выделения текста на любой вкладке - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь вызвать блок кода каждый раз, когда пользователь выбирает / выделяет какой-либо текст на любой из вкладок.

Я могу запустить JavaScript, когда выделяю какой-то текст и затем нажимаю на мойрасширение.Я уже читал некоторые из API-интерфейсов Chrome, но ни один из них не работаетhttps://developer.chrome.com/extensions/api_index

chrome.browserAction.onClicked.addListener(function() {
    alert(window.getSelection().toString());
});

Я не могу запустить код, как только выделю какой-то текст.Есть ли API, который уже обрабатывает это?

1 Ответ

0 голосов
/ 30 декабря 2018

Вы должны просто добавить буфер:

Выбор магазина

Когда вы говорите о выборках из любой вкладки, вы должны использовать api для хранения и ссылаться на идентификатор вкладки для дальнейшего использования.

document.onmouseup = function() { 
    chrome.tabs.getCurrent(function(_tabId){
        if(_tabId){
            var _SELECTION = {};
            _SELECTION[tabId] = window.getSelection().toString();
            chrome.storage.local.set(_SELECTION, function() {
                console.log('Selection saved: ', _SELECTION[tabId]);
            });
        }
    });
}

Используйте его при нажатии на добавочный номер

chrome.browserAction.onClicked.addListener(function() {
    chrome.tabs.getCurrent(function(_tabId){
        if(_tabId){
            chrome.storage.local.get(_tabId, function(result) {
                alert('Selection restored: ' + result[tabId].txt);
            });
        }

    });
});

Манифест

Не забудьте обновитьваш manifest.json для установки соответствующих разрешений

{
    ...

    "permissions": [
        "storage",
        "tabs"
    ],

    ...
}

Примечание

  1. Я использовал storage.local, поскольку буфер обмена должен храниться на локальном компьютере, но если вы хотите поделитьсяэто кросс-машины вы можете использовать storage.sync.Больше читать в документах .
  2. Я бы использовал contextMenus .Это имеет смысл, если вы выделите текст правой кнопкой мыши и выполните действие.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...