XMLHttpRequest サンプルコード
XMLHttpRequest を処理する簡易 Wrapper サンプルコード。
var myextension = {
// get html contents and do something
httpGet: function(url, callback) {
var req = new XMLHttpRequest();
req.onreadystatechange = this.bindFunction(this, function(e) {
if (req.readyState == 4) {
if (req.status == 200) {
if (typeof callback == "function") {
callback(req.responseText, req.status, req);
}
}
else {
var message = "HTTP Request Failed! - url: " + url;
if (this.debug && typeof this.debug.warn == "function") {
this.debug.warn(message);
}
else if (Firebug && Firebug.Console && typeof Firebug.Console.log == "function") {
Firebug.Console.log(message);
}
else {
window.alert(message);
}
}
}
});
req.open("GET", url, true);
req.send(null);
return req;
},
// workaround until we can use ECMA 5th bind method
// we can this function to specify 'this' for callback functions
bindFunction: function(thisobj, func) {
return function() func.apply(thisobj, arguments);
}
}
myextension.httpGet("", function(data, status, req) {
alert(data);
});
このコードは 拡張機能デバッグイ ンターフェイスや Firebug などと組み合わせて使えるようにしたり、コールバック関数で this が維持されない問題についての対応を含めたサンプルですが、拡張機能固有の話ではないので必要な機能に応じて適当に Web サイト用のコードを好きなように使えば OK です。