7

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

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

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

4

3 回答 3

11

我找到了以下解决方案:

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

一个小的工作示例:

清单.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); 

背景.html

chrome.extension.onRequest.addListener(
  function(request, sender, sendResponse) {
    if (request.event == "copy") {
       alert("copy detected");
    }
    sendResponse({});
  });
于 2010-05-27T05:30:55.990 回答
0

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

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

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

于 2010-05-24T18:58:15.857 回答
0

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

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

于 2010-05-25T23:27:06.690 回答