如何在后台运行Chrome扩展程序的网页上抓取复制活动?

时间:2018-02-22 08:45:22

标签: javascript google-chrome-extension

我已经尝试了几个小时来找到Chrome扩展程序的解决方案,以便能够在常规网站上收听复制活动。到目前为止,我最接近解决方案的是当我创建此事件脚本时:

function onCopy(e) {
    console.log("onCopy works"); //it doesn't :(
    chrome.runtime.sendMessage({event: "copy"});
}

chrome.runtime.sendMessage('copy', onCopy, true); 

oncopy.js上的函数应该在popup.js中向这样的函数发送消息:

chrome.extension.onMessage.addListener(
    function(request, sender, sendResponse) {
        if (request.event == "copy") {
            console.log("copy detected");
        }
        sendResponse({});
    }); 

不幸的是,console.log(“onCopy works”)创建的消息是唯一可行的。如果有人能澄清我做错了什么,以及我没做什么,我真的很感激。这里的目标是每次用户复制事件时从剪贴板获取数据。这是我的manifest.json的相关部分,以防它有用:

"background": {
    "scripts": ["oncopy.js"],
    "persistent": false
}

1 个答案:

答案 0 :(得分:1)

如果您的消息处理程序位于popup.js并且它实际上是popup.html内的脚本,则只有在打开弹出窗口时它才会起作用。
即使它在后台页面 - 它也不会显示警报。您应该使用console.log并在DevTools中打开背景页面以查看结果 您还需要chrome.runtime.onMessage.addListenerchrome.runtime.sendMessage在内容脚本和弹出/背景页面之间发送和接收消息:



// in background pagage or in popup page (works only when popup is opened)
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
    console.log("received: " + request);
    sendResponse("message has been processed by background page");
});

// in content script injected into website page
document.addEventListener("copy", () =>
    chrome.runtime.sendMessage(
        { event: "click" },
        msg => console.log(msg)))