このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

今度はXMLHttpを作ってるしぃ

えーとですね、「ブラウザでミニマムXML」シリーズをはじめると言いながら、その後、なんやかやと準備をしたりしています。「さっさとはじめんかい」と言われそうですが、僕としては:

  1. Rhino上でDOM APIを使えるようにしておきたい。
  2. 同じくRhino上でXMLHttpを使えるようにしておきたい。(ただし、非同期じゃなくてもいい。)

DOM APIは作りかけですが、まー、動くには動く(昨日の話)。で、XMLHttp、相当にイイカゲンですが、とりあえず作りました。イイカゲンゆえに非常に小さい。

これは、ブラウザの挙動を真似する気は全然なくて、実はJSANのモジュールシステムを動かせればいいと思って仕様を決めたものです。(JSANに関しては、brazilさんのこの記事が手っ取り早いです。)

JSAN.jsのなかに次のコードがあります。


this._req.open("GET", url, false);
try {
this._req.send(null);
if (this._req.status == 200 || this._req.status == 0)
return this._req.responseText;
} catch (e) {
JSAN._handleError("File not found: " + url);
return null;
};

ここで、this._req がXMLHttpリクエスタ。これを見ると、次のことができればいいみたい。

  1. open("GET", url, false) が動く。
  2. send(null) が動く。
  3. 読み込みに成功したら、statusに200か0をセットする。
  4. それと、responseTextに読んだ内容をセットする。

詳しいことは調べずに、id:nazokingさんのnazono/ajax.jsを参考に書きました。と、それだけです。(なお、JSAN.jsをRhino上で動かすには、JSAN.jsにわずかに手を入れる必要がありそう。)