Пишу расширение для хрома. Нужно поймать смену url на текущей вкладке и отправить некоторые данные из background скрипта в content скрипт Для простого примера взял сайт ВШЭ.
background.js:
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
if (changeInfo.url == "https://www.hse.ru/" && changeInfo.status == "complete") {
var sendObj = {
"myMessage": "this is main page"
};
chrome.tabs.sendMessage(tabId, sendObj);
} else if (changeInfo.url == "https://www.hse.ru/distant" && changeInfo.status == "complete") {
var sendObj = {
"myMessage": "this is some side page"
};
chrome.tabs.sendMessage(tabId, sendObj);
}
});
content.js:
chrome.runtime.onMessage.addListener(function(data) {
console.log(data.myMessage);
});
Интересно то, что на сайтах, где реализован History API, то есть страницы открываются без перезагрузки вкладки, этот код работает. Если при переходе на новый адрес вкладка перезагружается - уже не работает. Грешил сначала на то, что страница просто не успевает загрузиться к моменту, когда ей отсылается сообщение, но 'changeInfo.status == "complete"' не помогло. Что я упускаю? Заранее благодарен за помощь.