Я пытаюсь портировать веб-расширение, с которым я работал в Firefox, на chrome, и у меня возникли некоторые проблемы. Мне нужно отправить сообщение из фонового скрипта в скрипт контента. Я использовал порт при первой сборке из Firefox, но переключил его на использование chrome.tabs.query()
, потому что chrome продолжал обнаруживать ошибку. Но теперь с query()
он все еще работает нормально в Firefox, но теперь chrome говорит, что не может найти текущую вкладку:
Error handling response: TypeError: Cannot read property 'id' of undefined
at chrome-extension://hhfioopideeaaehgbpehkmjjhghmaaha/DubedAniDL_background.js:169:11
Возвращает, что передача аргумента табуляции длина == 0. console.log(tabs)
:
[]
Это функция, на которую жалуется Chrome.
var browser = chrome; // I set this only for compatibility with chrome; not set in Firefox.
function sendToTab(thing) {
browser.tabs.query(
{active: true, currentWindow: true},
function(tabs) {
console.log(tabs);
browser.tabs.sendMessage(
tabs[0].id, // The inspector identifies an error on this line
thing
);
}
);
}
Эта же функция отлично работает в Firefox и имеет нет проблем с получением доступа к вкладке. Но это не работает в Chrome.
Обновление 2020-01-30
@ wOxxOm:
Показать код, который вызывает sendToTab
Здесь sendToTab называется:
function logURL(requestDetails) {
var l = requestDetails.url;
if (l.includes(test_url)) {
if (logOn) { console.log(l); }
sendToTab({dl_url: l});
}
}
browser.webRequest.onBeforeRequest.addListener(
logURL,
{urls: ["<all_urls>"]}
);