0

我正在为 Linux 用户编写一个 Firefox 插件来传递 NTLM 身份验证站点的凭据。有些类似于使用 XUL 框架编写的 AutoAuth

https://addons.mozilla.org/en-us/firefox/addon/autoauth/

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

4

1 回答 1

1

使用附加 sdk,您没有 XUL 覆盖,因此您真正可以做的唯一事情就是使用窗口观察器。由于弹出窗口被视为窗​​口,当它们在浏览器中弹出时,您将在onTrack函数中看到它们。

此示例代码监视窗口以寻找chrome://global/content/commonDialog.xul与自动身份验证插件所做的类似的窗口位置。该对话框用于许多身份验证问题,因此您必须执行检测 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 并更改其中的元素。

注意window-utils模块已弃用,因此您需要跟上 SDK,因为它们从该模块移动到(希望)其他类似的东西。

于 2013-05-14T16:19:01.603 回答