如何使用FirefoxSDK访问HTTP身份验证对话框

如何使用FirefoxSDK访问HTTP身份验证对话框,firefox,firefox-addon,firefox-addon-sdk,http-authentication,Firefox,Firefox Addon,Firefox Addon Sdk,Http Authentication,我正在为Linux用户编写一个Firefox插件,用于传递NTLM认证站点的凭据。其中一些类似于使用XUL框架编写的AutoAuth 我的问题是,如何使用Firefox SDK访问身份验证对话框?使用附加SDK,您没有XUL覆盖,因此,除此之外,您真正可以做的唯一事情就是使用window watcher。由于弹出窗口被视为窗口,因此当它们在浏览器中弹出时,您将在onTrack功能中看到它们 此示例代码监视窗口,查找窗口位置chrome://global/content/commonDialog

我正在为Linux用户编写一个Firefox插件,用于传递NTLM认证站点的凭据。其中一些类似于使用XUL框架编写的AutoAuth


我的问题是,如何使用Firefox SDK访问身份验证对话框?

使用附加SDK,您没有XUL覆盖,因此,除此之外,您真正可以做的唯一事情就是使用window watcher。由于弹出窗口被视为窗口,因此当它们在浏览器中弹出时,您将在
onTrack
功能中看到它们

此示例代码监视窗口,查找窗口位置
chrome://global/content/commonDialog.xul
这与autoauth附加模块的工作类似。该对话框用于许多身份验证问题,因此您必须执行检测NTLM身份验证的附加工作

var { isBrowser } = require("sdk/window/utils");
var delegate = {
  onTrack: function (window) {
    if (!isBrowser(window) && window.location === "chrome://global/content/commonDialog.xul") {
       // this could be the window we're looking for modify it using it's window.document
    }
  },
  onUntrack: function (window) {
    if (!isBrowser(window) && window.location === "chrome://global/content/commonDialog.xul") {
       // undo the modifications you did
    }
  }
};
var winUtils = require("window-utils");
var tracker = new winUtils.WindowTracker(delegate);
有了这段代码,您几乎就可以使用autoauth加载项的load()函数了。您可以使用
window.document.getElementById()
访问该窗口的DOM并更改其中的元素

注意不推荐使用
窗口utils
模块,因此当SDK从该模块移动到(希望)其他类似模块时,您需要跟上SDK