Google chrome扩展程序-是否可以在任何标签上向文本选择/突出显示事件添加侦听器

时间:2018-12-30 05:52:17

标签: javascript google-chrome-extension

每次用户选择/突出显示任何选项卡上的某些文本时,我都试图触发代码块。

当我突出显示一些文本然后单击扩展名时,我可以运行javascript。 我已经阅读了一些chrome API,但似乎都没有用。 https://developer.chrome.com/extensions/api_index

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

突出显示一些文本后,我将无法运行代码。有没有已经处理过的API?

1 个答案:

答案 0 :(得分:0)

您应该只添加一个缓冲区:

商店选择

在谈论任何选项卡中的选择时,应使用storage api并引用tab id以便进一步使用。

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。在docs中有更多内容可供阅读。
  2. 我会使用contextMenus。如果突出显示文本以右键单击并执行操作,则更有意义。