簡體   English   中英

Google Chrome擴展程序-是否可以在任何標簽上向文本選擇/突出顯示事件添加偵聽器

[英]Google chrome extension - Is there a way to add a listener to text select/highlight event on any tab

每當用戶選擇/突出顯示任何選項卡上的某些文本時,我都試圖觸發代碼塊。

當我突出顯示一些文本然后單擊擴展名時,我可以運行javascript。 我已經閱讀了一些chrome API,但似乎都沒有用。 https://developer.chrome.com/extensions/api_index

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

突出顯示一些文本后,我將無法運行代碼。 是否有已經可以處理的API?

您應該只添加一個緩沖區:

店鋪選擇

在談論任何選項卡中的選擇時,應使用存儲api並引用選項卡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。 文檔中閱讀更多。
  2. 我會使用contextMenus 如果突出顯示文本以右鍵單擊並執行操作,則更有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM