Расширения Chrome: как узнать, когда вкладка завершила вызов ajax - PullRequest
1 голос
/ 10 января 2011

Теперь я пишу

function tabStatusOnChange(tabId, changeInfo)
  {
    if(changeInfo.status == "complete")
        chrome.tabs.executeScript(null, {file:"oneuniverse.js"});
  }
  chrome.tabs.onUpdated.addListener(tabStatusOnChange);

Но это не работает для страниц ajax и gmail. Как написать для статуса AJAX завершено

Ответы [ 2 ]

1 голос
/ 10 января 2011

Вы не можете использовать chrome.tabs.onUpdated для XHR, потому что он срабатывает только при обновлении вкладки.Когда вы отправляете запрос XHR, вкладка не обновляется (в этом вся суть "AJAX")

Единственный способ узнать, завершился ли вызов AJAX, - это переопределить его.Вы можете переопределить запрос AJAX (который использует XmlHTTPRequest), что-то вроде этого:

var origXHR= window.XMLHttpRequest;
window.XMLHttpRequest = customImplementation;

XMLHttpRequest может быть синхронным или асинхронным, поэтому вы должны принять во внимание оба варианта.Когда я имел в виду customImplementation, это означает, что вы будете использовать ту же реализацию, но в некоторых местах будете добавлять хуки (например, шаблон адаптера).

0 голосов
/ 10 января 2011

Вы не можете переопределить подобное в расширении chrome, так как расширение работает в другом контексте JavaScript на странице.Единственная точка взаимодействия - DOM.Таким образом, вам нужно искать событие DOM, которое запускается, когда запрос завершается.Но я не думаю, что есть один.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...