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

Google chrome Google Chrome扩展:如何检测复制操作(Ctrl-C和编辑复制)?,google-chrome,copy-paste,google-chrome-extension,Google Chrome,Copy Paste,Google Chrome Extension,如何检测到用户在Google Chrome扩展中当前活动选项卡中选择并复制了某些内容 在chrome.tabs或chrome.windows中似乎没有处理剪贴板的合适事件 是否有方法通过内容脚本检测此类操作?您必须使用自己的事件处理程序在文档元素上捕获onkeypress,检查event.keyCode='C'(或ascii代码)以及event.ctrlKey=true 如果这是有效的,则可能是用户复制了当前页面上的文本 您还需要捕获tab.updated事件,以便知道何时绑定onkeypres

如何检测到用户在Google Chrome扩展中当前活动选项卡中选择并复制了某些内容

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


是否有方法通过内容脚本检测此类操作?

您必须使用自己的事件处理程序在文档元素上捕获onkeypress,检查event.keyCode='C'(或ascii代码)以及event.ctrlKey=true

如果这是有效的,则可能是用户复制了当前页面上的文本


您还需要捕获tab.updated事件,以便知道何时绑定onkeypress事件。

Google Chrome Extensions提供了一个实验性API供您使用,该API允许您执行复制、剪切和粘贴。它目前存在于beta版本中,所以很快,它将脱离实验进入稳定状态


我找到了以下解决方案:

  • 设置清单文件以定义添加到每个页面的内容脚本和单独的背景页面
  • 在Content Script.js文件中,为文档或窗口的“复制”事件添加事件侦听器。每当用户启动复制操作时,都会调用此事件侦听器
  • 由于内容脚本存在于安全沙箱中(例如,没有跨站点的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({});
      });
    

    谢谢,这是检测通过键盘快捷键执行的复制事件的良好开端。在Javascript之外,我可能需要一种不同的机制来检测编辑菜单->复制调用。不幸的是,此API似乎只允许扩展执行副本。我正在寻找一种在用户启动复制时得到通知的方法。扩展无法做到这一点。要执行复制/粘贴/剪切扩展,请使用上面提到的剪贴板API。如果要在用户启动副本时侦听,则不能使用扩展。由于剪贴板API是实验性的,您可以发送您的问题,为什么需要侦听复制事件。您可以将您的电子邮件发送到chromium-extensions@chromium.org小组:如果你发现这个答案晚了9年(像我一样),那么。