Javascript 如何阻止特定选项卡上的HTTP请求?

Javascript 如何阻止特定选项卡上的HTTP请求?,javascript,firefox,firefox-addon,Javascript,Firefox,Firefox Addon,我正在开发一个FF插件。我想在特定选项卡中阻止除特定域(用户定义域)之外的任何域的所有http请求。下面给出的函数很好地完成了这项工作。但问题是它阻止了来自所有选项卡的http请求。如何仅在特定选项卡中启用以下功能?如何获取与http请求关联的选项卡 function allowOnly(domain) { //to block http request Components.classes["@mozilla.org/observer-service;1"] .getS

我正在开发一个FF插件。我想在特定选项卡中阻止除特定域(用户定义域)之外的任何域的所有http请求。下面给出的函数很好地完成了这项工作。但问题是它阻止了来自所有选项卡的http请求。如何仅在特定选项卡中启用以下功能?如何获取与http请求关联的选项卡

function allowOnly(domain)
{
    //to block http request
    Components.classes["@mozilla.org/observer-service;1"]
    .getService(Components.interfaces.nsIObserverService)
    .addObserver(
    {
    observe:
        function(aSubject, aTopic, aData)
        {
            if ("http-on-modify-request" == aTopic)
            {
                    var url = aSubject
                    .QueryInterface(Components.interfaces.nsIHttpChannel)
                    .originalURI.spec;
                    if (domain.lastIndexOf(doc.location) != 0 ) //cancel all http request of other domain & sub domain
                {
                    aSubject.cancel(Components.results.NS_BINDING_SUCCEEDED);
                    }
                }
        }
    }, "http-on-modify-request", false);

}

下面是一个示例,您可以从请求(应该是nsIChannel)获取loadContent

nsILoadContext具有“associatedWindow”、“topWindow”属性,因此您应该获得源DOMSWindow

var loadContext;
try {
  loadContext = 
    aRequest.QueryInterface(Components.interfaces.nsIChannel)
            .notificationCallbacks
            .getInterface(Components.interfaces.nsILoadContext);
} catch (ex) {
  try {
    loadContext =
      aRequest.loadGroup.notificationCallbacks
              .getInterface(Components.interfaces.nsILoadContext);
  } catch (ex) {
    loadContext = null;
  }
}