我試圖創建一個Firefox擴展,在任何當前頁面的Javascript被觸發前觸發我的Javascript代碼。我的Javascript代碼基本上可以控制頁面的Javascript代碼是否可以執行或拒絕。Firefox擴展:在加載DOM之前訪問DOM
我剛開始嘗試遵循this answer,但我無法真正弄清楚如何讓它正常工作,並意識到我依賴於onDOMContentLoaded
,它在Javascript已經執行後加載。
然後我將注意力轉向XPCOM,但又一次沒有真正理解Firefox教程告訴我什麼。
我最近試圖做一個extension through Firebug,但我似乎遇到了同樣的問題......只有在解析/執行後才能訪問Javascript。這是我寫的resulting code。我想,如果我能在onExamineResponse
事件訪問文件的對象,我的問題可以解決,但我不知道該怎麼做......我說的是這個代碼:
BeepbopListener.prototype = {
onRequest: function(context, file) {
...
},
onExamineResponse: function(context, file) {
FBTrace.sysout("onexamineresponse " + file); // this returns something like
// '[xpconnect wrapped (nsISupports, nsIHttpChannel, nsIRequest, nsIUploadChannel, nsITraceableChannel, nsIHttpChannelInternal)]'
// but I don't know how to access those elements...
var pattern = /\.js$/;
if (pattern.test(file.href) && FBTrace.DBG_BEEPBOP) {
FBTrace.sysout("ONEXAMINE DOESN'T EVEN GET IN THIS IF SO YOU WON'T SEE THIS");
}
},
...
};
所以我問題是...是否有一個教程,告訴我如何在執行之前訪問頁面上的所有Javascript代碼?此外,如果任何人有任何有用的見解,我很樂意聽到它。哦,如果你們都需要更多的代碼,只需告訴我,我會發布它。
嗯,不是我希望的答案,但仍然是一個堅實的答案。我現在正在嘗試的路線是製作一個代理服務器,而且這似乎是在做伎倆,但我真的希望有一個更簡單的方法來做到這一點。好吧。 – incutonez 2012-04-19 23:42:03
@incutonez:好吧,如果你想攔截HTTP流量,[nsITraceableChannel](http://www.softwareishard.com/blog/firebug/nsitraceablechannel-intercept-http-traffic/)可能是一個更簡單的解決方案。但是,您應該瞭解[bug 653533](https://bugzilla.mozilla.org/show_bug.cgi?id=653533)。 – 2012-04-20 05:26:36