我正在为Linux用户编写一个Firefox附加组件,以传递NTLM经过身份验证的站点的凭据。类似于使用XUL框架编写的AutoAuth
https://addons.mozilla.org/en-us/firefox/addon/autoauth/
我的问题是如何使用Firefox SDK访问身份验证对话框?
答案 0 :(得分:1)
使用附加sdk你没有XUL叠加层,所以只有你真正可以做的就是使用窗口观察器。由于弹出窗口被视为窗口,因此当您在浏览器中弹出窗口时,您会在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并更改其中的元素。
注意 window-utils
模块已被弃用,因此当您从该模块移动到(希望)其他类似的模块时,您需要跟上SDK。