Фоновая страница для связи с Content Script - PullRequest
2 голосов
/ 13 ноября 2011

У меня возникли некоторые проблемы с получением окончательного кода для работы над моим расширением.

Короткая версия заключается в том, что мне нужна моя страница background.html для уведомления моего скрипта содержимого всякий раз, когда появляется другая вкладкавыбран.На данный момент у меня есть следующее:

background.html

chrome.tabs.onSelectionChanged.addListener(function( tab_id , info ) {
    // some way to call App.resize();
});

файл сценария содержимого js file

var App = {
    resize: function() {
        // logic
    }
}

Более длинная версия состоит в том, что я создаю полноэкранное расширение для Chrome, которое работает так же, как Firefox и Safari на ПК.В настоящий момент, когда вы входите в полноэкранный режим, вы не можете по-настоящему переходить на другие вкладки, если вы не используете ярлык и не переключаетесь между всеми открытыми вкладками.Мое расширение показывает все открытые в данный момент вкладки, и вы можете переключиться на них, а также адресную строку, чтобы вы могли перейти на другие сайты и т. Д.

У меня все работает, как мне нужно, и все работаетхорошо, за исключением страниц, которые перенаправляют на другие.Например, с помощью Google Reader, когда вы открываете статью в фоновом режиме, она проходит через прокси-сервер Google, а затем перенаправляет на саму статью.Это единственное место, где это не работает.Но если я могу вызывать функцию App.resize () всякий раз, когда я переключаюсь на новую вкладку, это решит мою проблему.(Надеюсь).

1 Ответ

7 голосов
/ 25 ноября 2011

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

background.html (если вам нужно сообщить все вкладки)

chrome.tabs.onSelectionChanged.addListener(function() {
   chrome.windows.getAll({populate: true}, function(windows) {
      var w,t;
      for (w=0; w<windows.length; w++) {
         for (t=0; t<windows[w].tabs.length; t++) {
            chrome.tabs.sendRequest(windows[w].tabs[t].id, "resize");
         }
      }
   });
});

background.html (есливам нужно только проинформировать только что выбранную вкладку)

chrome.tabs.onSelectionChanged.addListener(function(tabId) {
   chrome.tabs.sendRequest(tabId, "resize");
});

скрипт содержания

var App = {
   resize: function() {
      // logic
   }
};

chrome.extension.onRequest.addListener(function(request) {
   if (request === "resize") {
      App.resize();
   }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...