Entries
20
■ XMLHttpRequest で躓いたとこ
XMLHttpRequest でデータをGET してinnerHTML で書き込んでみるのですが、取得したデータのサイズが大きめ(今回の場合14KB ちょっと)だと途中で表示が切れてしまうことがあります。どこに原因があるのか謎。gzip で圧縮してGET するデータのサイズを小さくすると起こらない(か、かなり起こりにくくなる)ようなのでXMLHttpRequest が原因なのかなと思ってるのですが…。環境はFirefox 1.0.2 。よく分かんない。Amazon へリクエストしてた時に起こったので、そこの問題かも。分かったら修正します。
あとreadyState == 4 の中でwindow.close() しようとするとバグる(同じく1.0.2 )。読み込み終わった後にページエリア(って言うの?)クリックしないと閉じてくれないみたいです。1.1 Nightly (20050405 )では再現しなかったものの、1.0.2 ではさらにタイトルバーをクリックするとFirefox ごと落ちる。マジデスカー 。これは使うに使えない…。
ここでやりたかったのは、POST データ送ってる時にその旨をアニメーションで知らせて、完了したらウィンドウ閉じるもの。友人にも指摘されたけど成功しても一瞬で切り替わるから見えんだろ、ってことです。解決策としては、POST データを同期設定で送って、終わったらsetTimeout で閉じるとか。かな?
node.innerHTML = '送ってます...'; // 処理中に表示させる何か
// 適当にデータ送る
var objXmlHttp = new XMLHttpRequest();
objXmlHttp.open('POST', '/foo/bar.php', false);
objXmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
objXmlHttp.send(encodeURI('hoge=hogehoge&...'));
setTimeout("window.close();", 500); // 0.5 秒待ってやる