Javascript 如何在后台运行Chrome扩展的网页上捕获复制事件?
我花了好几个小时试图找到一个Chrome扩展的解决方案,以便能够在常规网站上收听复制活动。到目前为止,最接近解决方案的是我创建此事件脚本时:Javascript 如何在后台运行Chrome扩展的网页上捕获复制事件?,javascript,google-chrome-extension,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); oncop
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”)是唯一有效的。如果有人能澄清我做错了什么,没有做什么,我将不胜感激。这里的目标是每次用户将副本复制为事件时从剪贴板获取数据。以下是my manifest.json的相关部分,以防有所帮助:
"background": {
"scripts": ["oncopy.js"],
"persistent": false
}
如果您的消息处理程序位于
popup.js
中,并且它实际上是popup.html
中的一个脚本,那么它只有在打开popup时才能工作。即使它位于后台页面,也不会显示警报。您应该使用
console.log
并在DevTools中打开后台页面以查看结果。您还需要在内容脚本和弹出/背景页面之间发送和接收消息:
//在后台页面或弹出页面中(仅当弹出窗口打开时有效)
chrome.runtime.onMessage.addListener((请求、发送方、发送响应)=>{
console.log(“接收:+请求”);
sendResponse(“消息已被后台页面处理”);
});
//在内容脚本注入到网站页面
document.addEventListener(“副本”,()=>
chrome.runtime.sendMessage(
{事件:“单击”},
msg=>console.log(msg))
Background页面与网页无关,无法侦听DOM事件。你需要一个内容脚本。请务必阅读文档中的扩展架构文章。@wOxxOm谢谢,我忘了读它(这是我的第一个Chrome扩展),它真的解释了很多。谢谢你的回答,我几乎成功了,我更新了问题的详细信息。你能告诉我什么在onCopy函数上不起作用吗?@xis-我添加了一个例子,说明你如何处理它。非常感谢你花这么多时间来帮助我们!