我正在为 Linux 用户编写一个 Firefox 插件来传递 NTLM 身份验证站点的凭据。有些类似于使用 XUL 框架编写的 AutoAuth
https://addons.mozilla.org/en-us/firefox/addon/autoauth/
我的问题是如何使用 Firefox SDK 访问身份验证对话框?
我正在为 Linux 用户编写一个 Firefox 插件来传递 NTLM 身份验证站点的凭据。有些类似于使用 XUL 框架编写的 AutoAuth
https://addons.mozilla.org/en-us/firefox/addon/autoauth/
我的问题是如何使用 Firefox SDK 访问身份验证对话框?
使用附加 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,因为它们从该模块移动到(希望)其他类似的东西。