2010-05-20 61 views

回答

4

我發現了以下解決方案:

  1. 建立一個清單文件來定義添加到每一個頁面內容腳本,和一個單獨的背景頁面。
  2. 在Content Script .js文件中,爲文檔或窗口的「複製」事件添加事件偵聽器。只要用戶啓動複製操作,就會調用此事件偵聽器。
  3. 由於內容腳本存在於安全沙箱中(例如,沒有跨站點XMLHttpRequests),我們可能想要在後臺頁面中響應該事件。爲此,請使用Chrome消息傳遞API,將消息發送到後臺頁面。

一個小工作示例:

的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({}); 
    }); 
0

你將不得不使用自己的事件處理程序來捕捉onkeypress事件文檔元素,檢查event.keyCode =「C」(或ASCII碼),而event.ctrlKey =真

如果這是有效,那麼用戶可能會在當前頁面上覆制文本。

您還需要捕獲tab.updated事件,以便知道何時綁定onkeypress事件。

+0

謝謝,這是檢測通過鍵盤快捷鍵執行的複製事件的良好開端。我可能需要一個不同的機制來檢測編輯菜單 - >複製調用,在Javascript之外。 – bjoern 2010-05-25 22:56:31

0

谷歌瀏覽器擴展插件有一個實驗性的API供您使用,它允許您執行復制,剪切和粘貼。它目前存在於beta版本中,所以很快它就會脫離實驗進入穩定狀態。

http://code.google.com/chrome/extensions/dev/experimental.clipboard.html

+0

偉大的發現 - 我不知道的實驗API。 不幸的是,它看起來像這個API只允許擴展*執行*副本。 我正在尋找一種方式,當用戶啓動一個副本時被*通知*。 – bjoern 2010-05-25 23:39:35

+0

不能使用擴展名 – BrunoLM 2010-05-25 23:55:59

+0

要執行擴展中的複製/粘貼/剪切,請使用上述剪貼板API。如果您想在用戶啓動副本時收聽,則無法使用擴展程序進行此操作。由於剪貼板API是實驗性的,因此您可以發送您的疑慮,爲什麼需要偵聽複製事件。您可以將您的電子郵件發送到[email protected]小組:http://groups.google.com/a/chromium.org/group/chromium-extensions/topics – 2010-05-26 18:21:41