我一直在閱讀和剽竊https://developer.mozilla.org/en/XUL_School/Intercepting_Page_Loads,但似乎可以做我所需要的。防止瀏覽器在xulrunner中的位置變化
我正在致力於Chromeless,試圖阻止主要的xulbrowser元素被導航離開,例如,鏈接不應該工作,也不應該window.location.href="http://www.example.com/"
。
我假設我可以通過browser.webProgress.addProgressListener
做到這一點,然後聽onProgressChange
,但我無法弄清楚如何將資源請求和browser
改變位置區分(似乎onLocationChange
是爲時已晚,因爲該文件已經被卸載)。
browser.webProgress.addProgressListener({
onLocationChange: function(){},
onStatusChange: function(){},
onStateChange: function(){},
onSecurityChange: function(){},
onProgressChange: function(){
aRequest.QueryInterface(Components.interfaces.nsIHttpChannel)
if(/* need to check if the object triggering the event is the xulbrowser */){
aRequest.cancel(Components.results.NS_BINDING_ABORTED);
}
},
QueryInterface: xpcom.utils.generateQI([Ci.nsIWebProgressListener, Ci.nsISupportsWeakReference])
}, wo._browser.webProgress.NOTIFY_ALL);
聽起來前途的另一種選擇是nsIContentPolicy.shouldLoad()
方法,但我真的不知道如何「創建擴展nsIContentPolicy XPCOM組件並將其註冊爲‘內容政策’使用nsICategoryManager類別。」
任何想法?