我正在研究一個簡單的Firefox擴展,它跟蹤所請求的URL並在後臺調用Web服務,該服務檢測URL是否可疑並基於返回的結果通過該服務,分機決定停止頁面加載並提醒用戶關於僞造或其他任何情況,並且如果用戶仍然希望轉到該頁面,則他可以將其重定向到他所請求的原始頁面Firefox擴展:當發現可疑網址時停止頁面加載
I已添加http修改請求觀察者
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
observerService.addObserver(requestObserverListener.observe, "http-on-modify-request", false);
和觀察者
var requestObserverListener = {observe: function (subject, topic, data) {
//alert("Inside observe");
if (topic == "http-on-modify-request") {
subject.QueryInterface(Components.interfaces.nsIHttpChannel);
var url = subject.URI.spec; //url being requested. you might want this for something else
//alert("inside modify request");
var urlbarvalue = document.getElementById("urlbar").value;
urlbarvalue = processUrl(urlbarvalue, url);
//alert("url bar: "+urlbarvalue);
//alert("url: "+url);
document.getElementById("urlbar").style.backgroundColor = "white";
if(urlbarvalue == url && url != "")
{
var browser = getWindowForRequest(subject);
if (browser != null) {
//alert(""+browser.contentDocument.body.innerHTML);
alert("inside browser: "+url);
getXmlHttpRequest(url);
}
}
}
},
}
所以當URLbar並且請求的URL的URL匹配REST服務將通過AJAX getXmlHttpRequest(URL)被調用;方法
現在當我運行該擴展調用,以服務,但該服務之前返回頁面被加載任何迴應,因爲用戶可能會在此期間進入他的證件,得到妥協這是不恰當的
我想先在瀏覽器選項卡上向用戶顯示一條警告消息,如果他仍然想訪問該頁面,則可以將其重定向到該頁面上的鏈接。單擊警告消息窗口中的內容
subject.suspend()和subject.resume()按預期工作,但subject.cancel(Components.results。NS_BINDING_SUCCEEDED)沒有取消請求,而是請求仍然處於掛起狀態 – 2013-02-25 08:46:50
哦,這可能是代碼中的複製/粘貼錯誤。我相信你想要的是:subject.cancel(Components.results.NS_BINDING_ABORTED); – 2013-03-12 19:40:54