[英]XUL getNotificationBox
我已經為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);
您在其中看到的“正在請求用戶名和密碼”字符串是通知窗口中顯示的文本的一部分。 如果我在這里做錯了什么,可以發現嗎?
任何幫助深表感謝。 謝謝!
您是否正確收到通知框? 您可以將getChromeWindow函數簡化為:
function getChromeWindow(aWindow) {
var chromeWin = aWindow.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebNavigation)
.QueryInterface(Ci.nsIDocShell)
.chromeEventHandler.ownerDocument.defaultView;
return chromeWin;
}
(http://mxr.mozilla.org/mozilla-central/source/toolkit/components/passwordmgr/src/nsLoginManagerPrompter.js#1208)
您可能還需要將.wrappedJSObject添加到chromeWin變量。
(http://mxr.mozilla.org/mozilla-central/source/toolkit/components/passwordmgr/src/nsLoginManagerPrompter.js#1295)
從您的描述中,聽起來您要攔截的對話框實際上是身份驗證對話框,而不是通知欄(在輸入密碼以確認是否要保存/更改后,它會出現)。 換句話說,聽起來您想修復Mozilla錯誤223636(https://bugzilla.mozilla.org/show_bug.cgi?id=223636)。 Firefox 4 beta實際上已經針對這種情況進行了修復(https://bugzilla.mozilla.org/show_bug.cgi?id=521467),但默認情況下已禁用(需要使用about:config更改隱藏的首選項)。
不幸的是,您粘貼的代碼將不會非常有用。 為了從當前發布版本的擴展中捕獲身份驗證對話框,您可能需要遵循“ common-dialog-loaded”主題的代碼與http://mxr.mozilla.org/mozilla-central/中的對話框處理邏輯的組合源/工具包/組件/密碼mgr / test / prompt_common.js 。 如果您在irc.mozilla.org/#extdev上找到我,可以提供更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.