2016-05-06 2 views
0

Привет, я пытаюсь выяснить, как страницы событий работают для расширений 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 
    } 
} 
+0

После некоторых более прибегая к помощи вокруг, я нашел что-то подобное [ссылка] https://stackoverflow.com/questions/20077487/chrome-extension-message-passing-response-not-sent. Проблема решена путем добавления возврата true внутри или вне IF. – enr00ted

ответ

0

Вам нужно м Убедитесь, что у вас есть следующее разрешение в вашем файле манифеста. Я не могу сказать, есть ли у вас это, поэтому я на всякий случай размещаю его там.

"permissions": [ 
    "bookmarks" 
] 
+0

Я обновил свой вопрос, у меня уже есть это разрешение, поскольку я могу получить закладки в фоновом режиме, вещь - это сообщение не передается на передний план/всплывающее окно. – enr00ted

Смежные вопросы