Google Chrome扩展程序:如何检测复制操作(Ctrl-C和编辑复制)?

bjo*_*ern 6 google-chrome copy-paste google-chrome-extension

如何检测用户是否在Google Chrome扩展程序的当前有效标签中选择并复制了某些内容?

似乎没有合适的事件处理chrome.tabs或chrome.windows中的剪贴板.

有没有办法通过内容脚本检测此类操作?

bjo*_*ern 8

我找到了以下解决方案:

  1. 设置清单文件以定义添加到每个页面的内容脚本和单独的背景页面.
  2. 在内容脚本.js文件中,为文档或窗口的"复制"事件添加事件侦听器.只要用户启动复制操作,就会调用此事件侦听器.
  3. 由于内容脚本存在于安全沙箱中(例如,没有跨站点XMLHttpRequests),我们可能希望在后台页面中响应该事件.为此,请使用Chrome消息传递API,以便向后台页面发送消息.

一个小例子:

的manifest.json

{
  "background_page": "background.html",
  "content_scripts": [
      {
        "matches": ["http://*/*"],
        "js": ["oncopy.js"]
      }
    ]
}
Run Code Online (Sandbox Code Playgroud)

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); 
Run Code Online (Sandbox Code Playgroud)

background.html

chrome.extension.onRequest.addListener(
  function(request, sender, sendResponse) {
    if (request.event == "copy") {
       alert("copy detected");
    }
    sendResponse({});
  });
Run Code Online (Sandbox Code Playgroud)

  • 如果您发现这个答案已经晚了 9 年(像我一样),那么 [需要对 API 进行一些更新](/sf/answers/959703111/)。 (2认同)