Home / Diary / ニンテンドーDSブラウザでAjax

ニンテンドーDSブラウザでAjax

っぽいことをする。

XMLHttpRequestがダメなだけで、iframeを使ってテキスト取得とかは可能。俗に言うIFRAMEHTTPRequest。もしくはHTTP.Push?

var iframe = document.createElement( "iframe" );
iframe.src = <ローカルファイル>;
iframe.onload = function( ) {
//読み込み完了時の動作
}
document.body.appendChild( iframe );

最小構成だとこなかじ。当然のことながら呼び出すコンテンツは同じドメインのものでないと、内部にアクセスした途端にエラーが返ってくる。

んで、XMLHttpRequestではないので色々と制限を受ける。

HTMLを読み込んだ時は、画像やらスクリプトやら諸々全てが完全に読み込まれてから初めてonloadが発生したり、POSTで取得できなかったり。(がんばればできるという話を聞いたが)

textやscriptを読むときは注意が必要。内部でpre要素に入れられつつ、[<>"&]が文字参照に変換されてしまっているので元に戻す必要がある。

var doc = <iframeオブジェクト>.contentWindow.document;
if( doc.doctype == null ) { //nullだとhtmlではない・・・らしい
    alert( doc.body.innerHTML
    .replace( /^<pre>|<\/pre>$/i, "" )
    .replace( /&quot;/g, "\"" )
    .replace( /&lt;/g, "<" )
    .replace( /&gt;/g, ">" )
    .replace( /&amp;/g, "&" )
    );
}
else {
    alert( doc.body.innerHTML );
}

外部のコンテンツはとりあえず取得できる。が、したらしたで今度は貧弱なDSの側で色々しなきゃいかん場合もあるので、ある程度はサーバーサイドと相談するのがいいかもしれん。

補足。試しにGoogleのHTMLソースを取得してalertさせたら、画面暗転してから(この時点で既に読み込みは完了してる)ソース表示まで10秒近くかかった。・・・そこまで負荷がかかるのか。(というか描画全般に弱いのかな?)

Info

関連のあるエントリ
2008-05-31 スクリプト色々更新
2008-11-12 はてなアンテナの未読リンクを一気に開くUser JavaScript
2006-03-05 OperaのJavaScriptでマウスホイールを検知できるようになった
2005-12-31 風来のシレン外伝 女剣士アスカ見参! 猿奇魔天の挑戦
2006-09-16 風来のシレンDSの発売日が決定
新しいエントリ(日付順)
アトラスUSA、『超執刀 カドゥケウス NEO』をロンチタイトルと発表
古いエントリ(日付順)
超執刀カドゥケウス

Comment

投稿したコメントは公開されません。サイトオーナーのみが閲覧できます。
返信等を希望する場合は、コメント内に連絡先のメールアドレスかサイトのURLを入力してください。

2006
0801

Tagsgamejavascriptopera

最新のエントリ
注目のエントリ(はてな)
ゲーム攻略

暴満館 ~The House of Full Violence~
Powered by WordPress.
About | Contact | 新着のエントリ情報 RSS