Google chrome extension 如何为特定选项卡激活chrome.runtime.onMessage.addListener?
我正在创建一个chrome扩展,并在这个过程中使用消息传递。过程如下: 1.-popup.js在我单击popup元素时向后台发送请求Google chrome extension 如何为特定选项卡激活chrome.runtime.onMessage.addListener?,google-chrome-extension,Google Chrome Extension,我正在创建一个chrome扩展,并在这个过程中使用消息传递。过程如下: 1.-popup.js在我单击popup元素时向后台发送请求 function sendMessageToContent(contactName){ chrome.runtime.sendMessage({elementValue: contactName}, function(response) { console.log(response.farewell); }); } 2.-background.js侦听请
function sendMessageToContent(contactName){
chrome.runtime.sendMessage({elementValue: contactName}, function(response) {
console.log(response.farewell);
});
}
2.-background.js侦听请求
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if(request.elementValue != null){
var accessToken = localStorage.getItem('accessToken');
var instanceUrl = localStorage.getItem('instanceUrl');
getContactByName(accessToken,instanceUrl,request.elementValue);
sendResponse({farewell: "ContactResponse"});
}
});
并向content.js发送另一个请求
function getContactByName(accessToken,instanceUrl,contactName){
var urlQuery = 'query';
fetch(instanceUrl+urlQuery,{
method: 'get',
headers: new Headers({
'Authorization': 'Bearer '+accessToken,
'Content-Type': 'application/json'
})
})
.then(response => {
if(response.status != 200){
showAuthNotification();
}
return response.json()
})
.then(data => {
for(var i = 0; i<data.totalSize; i++){
contact.push({name:data.records[i].Name, email:data.records[i].Email, id:data.records[i].Id});
}
localStorage.setItem('contactInfo', JSON.stringify(contact));
chrome.tabs.query({}, function (tab) {
chrome.tabs.update(tab[4].id, {active: true});
chrome.tabs.sendMessage(tab[4].id, {message: "OK"});
}
});
})
.catch(function (error) {
console.log('Request failure: ', error);
})
}))
他没有听这个请求
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if(request.elementValue != null){
var accessToken = localStorage.getItem('accessToken');
var instanceUrl = localStorage.getItem('instanceUrl');
getContactByName(accessToken,instanceUrl,request.elementValue);
sendResponse({farewell: "ContactResponse"});
}
});
如何确保侦听器对所有请求或特定选项卡都处于活动状态,而不仅仅是对当前点击?添加处理所有三个文件消息的相关代码。我的问题会用相关代码更新,谢谢@tradatoriwd.sendmages不关心选项卡是否处于活动状态。你的代码中还有其他错误。例如,为什么使用tab[4]?另外,您是否通过查看devtools的背景页面chrome://extensions 页调试代码、设置断点、检查变量——这是解决问题的第一步。