目前我正在为Mozilla Firefox编写一个插件,该插件需要能够监听选项卡发出的任何http请求。所以我正在阅读有关该主题的mdn article的描述,但我无法让它运行。
我尝试了“简单方法”,但我不知道在哪里放置此代码。如果我将它放在插件的index.js中,它只是说“gBrowser未定义”如果有人能告诉我如何运行它会非常好。
我也读过这个article,这与我使用XMLHttpRequest的问题类似,我可以开始工作。所以我试图从这个问题中将其形成解决方案,但它也不起作用。
非常感谢您的帮助:)
编辑:我能够将第二篇文章中的代码构建到适用于XMLHttpRequest的解决方案中,如下所示:
<script>
function clickCounter() {
if(typeof(Storage) !== "undefined") {
if (localStorage.clickcount) {
localStorage.clickcount = Number(localStorage.clickcount)+1;
} else {
localStorage.clickcount = 1;
}
document.getElementById("result").innerHTML = "You have clicked the button " + localStorage.clickcount + " time(s).";
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support web storage...";
}
}
</script>
<p><button onclick="clickCounter()" type="button">Click me!</button></p>
<div id="result"></div>
但它没有做日志输出(或者至少我在浏览器控制台中找不到它。)
答案 0 :(得分:0)
我找到了解决方案,这只是我的错。我将变量命名为错误,因此未设置“nsIHttpActivityObserver”!所以这将是正确的代码:
let { Cc,Ci } = require("chrome");
var nsIHttpActivityObserver = Cc["@mozilla.org/network/http-activity-distributor;1"].getService(Ci.nsIHttpActivityDistributor);
var httpObserver = {
observeActivity: function(aHttpChannel, aActivityType, aActivitySubtype, aTimestamp, aExtraSizeData, aExtraStringData){
if (aActivityType == nsIHttpActivityObserver.ACTIVITY_TYPE_HTTP_TRANSACTION) {
switch(aActivitySubtype) {
case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_HEADER:
console.log('header received')
break;
case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_COMPLETE:
console.log('complete anwser received')
break;
}
}
}
};
nsIHttpActivityObserver.addObserver(httpObserver);