Проблема расширения Chrome при получении URL-адреса вкладки
Я не очень хорош в JS, и у меня возникла какая-то, надеюсь, глупая проблема, которую я не вижу в своем коде... если бы вы, ребята, могли бы мне помочь, я был бы очень признателен.
Мое расширение делает некоторые вещи с URL текущей вкладки. Он работал нормально, используя событие onUpdate на моей фоновой странице, устанавливая URL-адрес вкладки для переменной, а затем я использовал его во всплывающем окне.
Дело в том, что если пользователь начинает, выбирая разные вкладки, не обновляя URL-адреса, мое событие больше не будет запускаться... поэтому я также слушаю событие onSelectionChanged.
Дело в том, что в параметрах события onSelectionChanged нет объекта "tab", поэтому я не могу запросить свойство tab.url.
Я пытался использовать метод chrome.tabs.getCurrent(), но, очевидно, я делаю что-то не так... и я достиг предела своих очень маленьких знаний.
Вот код, если вы, ребята, могли бы взглянуть и указать мне правильное направление, я буду очень признателен.
<script>
var tabURL = '';
var defaultURLRecognition = [ "test" ];
// Called when the url of a tab changes.
function checkForValidUrl(tabId, changeInfo, tab) {
//THIS IS WHAT'S NOT WORKING, I SUPPOSE
if (tab==undefined) {
chrome.tabs.getCurrent(function(tabAux) {
test = tabAux;
});
}
//
// If there's no URLRecognition value, I set the default one
if (localStorage["URLRecognition"]==undefined) {
localStorage["URLRecognition"] = defaultURLRecognition;
};
// Look for URLRecognition value within the tab's URL
if (tab.url.indexOf(localStorage["URLRecognition"]) > -1) {
// ... show the page action.
chrome.pageAction.show(tabId);
tabURL = tab.url;
}
};
// Listen for any changes to the URL of any tab.
chrome.tabs.onUpdated.addListener(checkForValidUrl);
// Listen for tab selection changes
chrome.tabs.onSelectionChanged.addListener(checkForValidUrl);
</script>
1 ответ
Я бы сделал что-то вроде этого:
function checkForValidUrl(tab) {
//...
}
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
if(changeInfo.status == "loading") {
checkForValidUrl(tab);
}
});
chrome.tabs.onSelectionChanged.addListener(function(tabId, selectInfo){
chrome.tabs.getSelected(null, function(tab){
checkForValidUrl(tab);
});
});