Я разработал небольшой аддон для Firefox, в котором я сохраняю некоторые http прокси, так как много с ними работаю. Все прокси, после загрузки в ff, запрашивают имя пользователя и пароль во всплывающем окне. В моем аддоне сохранена эта информация, поэтому мне нужно найти способ задания значения полей ввода в этом окне уведомлений, которое отображается для аутентификации на прокси-сервере и избежать необходимости вручную вводить эти данные каждый раз, когда я меняю свой прокси.
Я должен признать, что я абсолютный новичок с XUL и javascript, а также. Я искал в Интернете и протестировал всевозможные фрагменты, но не могу получить содержимое уведомления, решить, нужно ли это, и ввести правильные значения.
У меня есть фрагмент кода, который, вероятно, приближается к тому, что я хочу, но, похоже, он не работает:
function getNotificationBox() {
const Ci = Components.interfaces;
function getChromeWindow(aWindow) {
var chromeWin = aWindow
.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebNavigation)
.QueryInterface(Ci.nsIDocShellTreeItem)
.rootTreeItem
.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindow)
.QueryInterface(Ci.nsIDOMChromeWindow);
return chromeWin;
}
var notifyWindow = window.top;
var chromeWin = getChromeWindow(notifyWindow);
var notifyBox = chromeWin.getNotificationBox(notifyWindow);
return notifyBox;
}
function clickNotificationButton() {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var box = getNotificationBox();
var bar = box.getNotificationWithValue("is requesting a username and password");
var button = bar.getElementsByTagName("button").item("OK");
button.doCommand();
}
window.addEventListener("DOMNodeInserted", function(e) { clickNotificationButton;
}, false);
Кусок строки, который вы видите там "запрашивает имя пользователя и пароль", является частью текста, который отображается в окне уведомлений. Может кто-то заметит, если я здесь что-то не так делаю?
Любая помощь очень ценится. Спасибо!