2013-08-10 9 views
3

Я создаю расширение Chrome и пытаюсь запустить функцию каждый раз, когда вкладка пользовательских изменений. Я смотрел на слушателей в API webRequest и на chrome.tabs, но не мог понять, что использовать, и что не использовать.Добавление слушателя, который срабатывает всякий раз, когда пользователь меняет вкладку

Единственная информация, которая мне нужна на вкладке, это ее адрес.

ответ

4

Взгляните на chrome.tabs.onActivated:

Срабатывает, когда активная вкладка в окне изменения. Обратите внимание, что URL-адрес табуляции не может быть установлен во время запуска этого события, но вы можете прослушивать onUpdated events, чтобы получать уведомления о появлении URL-адреса.
Google Documentation

chrome.tabs.onActivated.addListener(function(activeInfo) { 
    chrome.tabs.get(activeInfo.tabId, function (tab) { 
     mySuperCallback(tab.url); 
    }); 
}); 

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, updatedTab) { 
    chrome.tabs.query({'active': true}, function (activeTabs) { 
     var activeTab = activeTabs[0]; 

     if (activeTab == updatedTab) { 
      mySuperCallback(activeTab.url); 
     } 
    }); 
}); 

function mySuperCallback(newUrl) { 
    // ... 
} 

Это определенно работает в фоновом режиме страниц (как Locercus подтверждено в a comment), но, пожалуйста, рассмотреть вопрос об использовании event pages (стабильный, так как Chrome 22) вместо этого.

+0

Я взглянул на него. Но как я буду искать URL, когда он будет установлен. Мне нужно, чтобы событие срабатывало, когда вы переходите на новый URL-адрес на активной вкладке. – miestasmia

+0

@Locercus Используйте [chrome.tabs.onUpdated] (https://developer.chrome.com/extensions/tabs.html#event-onUpdated) и проверьте, является ли измененная вкладка активной вкладкой в ​​текущем окне * и * URL был изменен. – ComFreek

+0

Не могли бы вы привести мне пример в контексте? Где я разместил onActivated прослушиватель? Я уверен, что это не сработает в popup.js – miestasmia

Смежные вопросы