Проблема с расширением Chrome при получении URL-адреса вкладки - PullRequest
1 голос
/ 04 марта 2011

Я не очень хорош в JS, и у меня возникла какая-то, я надеюсь, глупая проблема, которую я не вижу в своем коде ... если бы вы, ребята, могли бы мне помочь, я был бы очень благодарен.

Мое расширение делает некоторые вещи с URL текущей вкладки.Он работал нормально, используя событие onUpdate на моей фоновой странице, устанавливая URL-адрес вкладки для переменной, а затем я использовал его во всплывающем окне.

Дело в том, что если пользователь запускает, выбирает разные вкладки, не обновляя URL-адреса, мое событие больше не будет запускаться ... поэтому я также слушаю onSelectionChanged event.

Дело в том, что в параметрах события 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 Ответ

3 голосов
/ 04 марта 2011

Я бы сделал что-то вроде этого:

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);
    });
});
...