Синхронный обратный вызов между скриптом содержимого и background.html - PullRequest
0 голосов
/ 05 июля 2011

Я знаю, что нет способа сделать это, но есть один способ сделать это специально для моей задачи. Я хочу выполнить команду window.stop () в скрипте содержимого, как только это станет возможным для неактивных вкладок, чтобы ускорить запуск Google Chrome, когда у меня открыто более 30 вкладок. Обычно я отправляю запрос из скрипта контента в background.html, чтобы определить, не активна ли текущая вкладка, дождаться ответа и затем выполнить window.stop (). Но это плохая идея, потому что при одновременной загрузке 30 вкладок ответ на запрос занимает слишком много времени. Поэтому мне нужен обратный вызов Syncronus для немедленной остановки страницы после активации сценария содержимого. Поэтому я пришел с этим решением. В background.html я делаю это

chrome.tabs.getAllInWindow(null,
function(tabs)
{ tabs.forEach(
  function(tab)
  { //check if tab is active
    //if it's not do chrome.tabs.update(tab.id, {url: "modified_url", selected: tab.selected})
  })
})

Я пробовал 2 способа изменить URL

1: google.com => google.com//

2: google.com => google.com???

Когда скрипт содержимого проверяет window.location.href и находит там вопросительный знак с двойной или двойной косой чертой, он выполняет window.stop ()

Так что Chrome живет без времени, чтобы умереть во время загрузки :)

Но этот путь не идеален, хотя. Многие страницы автоматически исправляют такие URL. И конечно это грубо.

Так, может быть, есть другой способ сделать что-то с вкладками, используя background.html, чтобы скрипт контента знал об этом, чтобы избежать передачи сообщений?

Ответы [ 2 ]

0 голосов
/ 03 июня 2012

Я обнаружил один подход, который позволяет передавать boolean значения синхронно между скриптом содержимого и фоновым html.Он включает в себя webRequest API.
То, что я делаю, отправляется XMLHttpRequest в window.location.href из скрипта содержимого.
Затем я ловлю этот запрос в фоновом html и проверяю его URL-адрес, если URL-адрес соответствует URL-адресу вкладкиотправив его, я либо отменяю запрос, либо позволяю ему выполняться.
Таким образом, скрипт содержимого может определить, что происходит в фоновом режиме, потому что отмененный запрос
возвращает -1.

0 голосов
/ 05 июля 2011

А что вместо:

chrome.tabs.update(tab.id, {url: "modified_url", selected: tab.selected});

делает

chrome.tabs.executeScript(tab.id, {code: "window.close()"});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...