我已经尝试了几个小时来找到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
}
答案 0 :(得分:1)
如果您的消息处理程序位于popup.js
并且它实际上是popup.html
内的脚本,则只有在打开弹出窗口时它才会起作用。
即使它在后台页面 - 它也不会显示警报。您应该使用console.log
并在DevTools中打开背景页面以查看结果
您还需要chrome.runtime.onMessage.addListener
和chrome.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)))