gpt4 book ai didi

google-chrome - 关于在 bg.html、popup.html 和 contentscript.js 之间发送消息

转载 作者:行者123 更新时间:2023-12-04 21:54:52 24 4
gpt4 key购买 nike

在我的扩展中,当一个按钮名为 mybuttonlpopup.html
点击,它会发送一条消息 "getvar"contentscript.js ,它依次发送消息 "I want var1"background.html获取名为 var1 的对象. (一个名为 mybutton2 的按钮也同样设置,只是它在点击时获得 var2 对象)。

我应该如何实现?

更重要的是,我对chrome.extension.onRequest.addListener有点困惑。和 chrome.extension.sendRequest方法。有人可以解释一下吗?

最佳答案

onRequest.addListener 和 sendRequest 是 Chrome 扩展消息传递的一部分。位于这里http://developer.chrome.com/extensions/messaging.html

基本上,您使用“onRequest.addListener”来监听某人通过触发“sendRequest”而发送的请求。

在您的情况下,您在内容脚本中放置了一个“onRequest.addListener ”来监听来自 Popup 的请求(使用 sendRequest )。并且从您的内容脚本中,您可以将响应返回到您的弹出窗口以处理正在发生的事情。在弹出窗口中,您可以使用 chrome.extension.getBackgroundPage() 直接访问后台页面。 .

如果您希望您的内容脚本也与您的后台页面进行通信(由于您使事情变得更加复杂,因此不需要这样做),您可以向您的后台页面添加一个“onRequest.addListener”,该页面仅监听来自内容脚本的请求.要做到这一点,Message Passing完美地解释了它。 “sender.tab”如果为真,则是一个内容脚本。

下面的示例(未经测试)显示了我对消息传递的意思。请记住,尽量保持简单,而不是复杂。

例子

弹窗.html

chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendRequest(tab.id, {method: "fromPopup", tabid: tab.id}, function(response) {
console.log(response.data);
});
});

内容脚本.js
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.method == "fromPopup") {
// Send JSON data back to Popup.
sendResponse({data: "from Content Script to Popup"});

// Send JSON data to background page.
chrome.extension.sendRequest({method: "fromContentScript"}, function(response) {
console.log(response.data);
});
} else {
sendResponse({}); // snub them.
}
});

背景页.html
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
// From content script.
if (sender.tab) {
if (request.method == "fromContentScript")
sendResponse({data: "Response from Background Page"});
else
sendResponse({}); // snub them.
}
});

关于google-chrome - 关于在 bg.html、popup.html 和 contentscript.js 之间发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2612098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com