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 です。