gpt4 book ai didi

javascript - runtime.onMessage 发送者参数不包含选项卡信息

转载 作者:行者123 更新时间:2023-12-03 08:46:29 25 4
gpt4 key购买 nike

我有一个发送消息的浏览器操作

chrome.browserAction.onClicked.addListener(function(tab) {
var message = {
'message': 'overlay-intent'
};

tab_message(tab.id, message);
});

function tab_message(tab_id, message) {
if (message) {
chrome.tabs.sendMessage(tab_id, message);
}
}

以及我的内容脚本的监听器

chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
var domain = window.location.host;
ext_id = sender.id;

if (request.message === 'overlay-intent') {
if (is_modal_open()) {
return close_modal();
}

if (csp_blacklist.indexOf(domain) > -1 ) {
return create_tab();
}
var src = build_source(sender.tab.id);
open_modal(src);
}
});

我遇到的问题是我需要该选项卡来自当前选定的选项卡,而不必发送另一条消息。我读到发件人应该有一个选项卡对象,但它没有。我想知道我是否在这里做错了什么。

最佳答案

好吧,属性sender意味着it has information about who sent the message ,而不是谁收到它。

由于发件人是后台页面,因此您会得到错误的结果。

消息可以是任何(JSON 兼容)格式 - 它可以是一个具有任意多个键的对象;您只需在消息中包含选项卡 ID:

function tab_message(tab_id, message) {
if (message) {
message.tabId = tab_id;
// message becomes {tabId: ..., ...}
chrome.tabs.sendMessage(tab_id, message);
}
}

关于javascript - runtime.onMessage 发送者参数不包含选项卡信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32871510/

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