如何檢測用戶是否已選擇並複製Google Chrome擴展程序當前活動選項卡中的某些內容?谷歌瀏覽器擴展:如何檢測複製操作(Ctrl-C和編輯 - 複製)?
似乎沒有合適的事件處理chrome.tabs或chrome.windows中的剪貼板。
有沒有辦法通過內容腳本來檢測這些行爲?
如何檢測用戶是否已選擇並複製Google Chrome擴展程序當前活動選項卡中的某些內容?谷歌瀏覽器擴展:如何檢測複製操作(Ctrl-C和編輯 - 複製)?
似乎沒有合適的事件處理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 =真
如果這是有效,那麼用戶可能會在當前頁面上覆制文本。
您還需要捕獲tab.updated事件,以便知道何時綁定onkeypress事件。
谷歌瀏覽器擴展插件有一個實驗性的API供您使用,它允許您執行復制,剪切和粘貼。它目前存在於beta版本中,所以很快它就會脫離實驗進入穩定狀態。
http://code.google.com/chrome/extensions/dev/experimental.clipboard.html
偉大的發現 - 我不知道的實驗API。 不幸的是,它看起來像這個API只允許擴展*執行*副本。 我正在尋找一種方式,當用戶啓動一個副本時被*通知*。 – bjoern 2010-05-25 23:39:35
不能使用擴展名 – BrunoLM 2010-05-25 23:55:59
要執行擴展中的複製/粘貼/剪切,請使用上述剪貼板API。如果您想在用戶啓動副本時收聽,則無法使用擴展程序進行此操作。由於剪貼板API是實驗性的,因此您可以發送您的疑慮,爲什麼需要偵聽複製事件。您可以將您的電子郵件發送到[email protected]小組:http://groups.google.com/a/chromium.org/group/chromium-extensions/topics – 2010-05-26 18:21:41
謝謝,這是檢測通過鍵盤快捷鍵執行的複製事件的良好開端。我可能需要一個不同的機制來檢測編輯菜單 - >複製調用,在Javascript之外。 – bjoern 2010-05-25 22:56:31