Chrome扩展程序:如何知道标签何时完成ajax调用

时间:2011-01-10 01:46:33

标签: google-chrome-extension

现在,我正在写

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

但它也不适用于ajax页面和gmail。如何写ajax状态完成

2 个答案:

答案 0 :(得分:1)

您不能对XHR使用chrome.tabs.onUpdated,因为它只会在更新选项卡时触发。当您发送XHR请求时,选项卡不会更新(这是“AJAX”的全部内容)

知道AJAX调用是否完成的唯一方法是覆盖它。您可以覆盖AJAX请求(使用XmlHTTPRequest),如下所示:

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

XMLHttpRequest可以是同步或异步的,因此您必须同时考虑这两者。当我的意思是customImplementation时,它意味着你将使用相同的实现,但你会在某些地方添加钩子(例如适配器模式)。

答案 1 :(得分:0)

您无法像在Chrome扩展程序中那样覆盖,因为扩展程序在与页面不同的JavaScript上下文中运行。互操作性的唯一要点是DOM。因此,您需要查找请求完成时触发的DOM事件。但我不认为有一个。