我试图创建一个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