Привет, я пытаюсь выяснить, как страницы событий работают для расширений Chrome. Идея состоит в том, чтобы попросить страницу событий получить дерево закладок и отправить ее в ответ на всплывающее окно.Расширение асинхронного расширения Chrome от страницы событий до всплывающего окна
Проблема: Ответ undefined. Ответ от внешней функции getTree() работает, а другой нет. Я делаю это неправильно?
background.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.action == "INIT"){
chrome.bookmarks.getTree(function(treeStructure){
sendResponse(treeStructure);
});
}
//sendResponse(true);
});
popup.js
chrome.runtime.sendMessage({action: "INIT"}, function(response) {
console.log(response);
});
Manifest.xml
{
"manifest_version": 2,
"name": "Test",
"description": "Test",
"version": "1.0",
"browser_action": {
"default_icon": "/img/icon.png",
"default_popup": "front.html"
},
"icons": { "16": "/img/icon.png",
"48": "/img/icon.png",
"128": "/img/icon.png" },
"permissions": [
"bookmarks",
"storage",
"https://*/"
],
"background": {
"scripts": ["js/back.js"],
"persistent": false
}
}
После некоторых более прибегая к помощи вокруг, я нашел что-то подобное [ссылка] https://stackoverflow.com/questions/20077487/chrome-extension-message-passing-response-not-sent. Проблема решена путем добавления возврата true внутри или вне IF. – enr00ted