Вам не нужно использовать API сообщений / запросов. Я думаю этот ответ может вам помочь.
Вам также не нужен sessionStorage, просто храните ваши данные в глобальной переменной фоновой страницы. Он будет сохраняться до тех пор, пока браузер не закроется или пока расширение не будет перезапущено.
Итак, вот как я бы переписал ваш код:
background.html:
var data = {}; // Object storing data indexed by tab id
и в popup.html:
chrome.tabs.getSelected(null, function(tab) {
alert(chrome.extension.getBackgroundPage().data[tab.id]);
});
Обратите внимание, что chrome.tabs.getSelected
устарела начиная с Chrome 16 , поэтому всплывающий код должен быть:
chrome.windows.getCurrent(function(win) {
chrome.tabs.query({'windowId': win.id, 'active': true}, function(tabArray) {
alert(chrome.extension.getBackgroundPage().data[tabArray[0].id]);
});
});