- PR -

dojo1.1でのinnnerHTML

1
投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-09-10 21:02
こんにちは。

dojo1.1を使って非同期通信をしています。
単純にURL先にテキストファイルがあり、HTML書式のソースを取得しているだけですが、
innnerHTMLを使ってセットするとIE6しか正常にセットされませんでした(中身はdojoのタグライブラリ)。他に検証しているのはFireFox3.0,Opera0.95,Safari3.1,Choromeです。

データ自体は取得できているのですが、タグが認識されない形で、メニューバーのように表示されるはずが、アイテム名だけしか羅列されません。

そのURL先のテキストをそのまま貼り付けると普通に表示されるのですが・・

function get_menu() {
filename = "http://test.com/sample/sample.txt";
dojo.xhrGet( {
url: filename,
handleAs: "text",
timeout: 1000,
load: function(response, ioArgs) {
dojo.byId("menu").innerHTML = response;
return response;
},
error: function(response, ioArgs) {
console.error("HTTP status code: ", ioArgs.xhr.status);
return response;
}
});
}

<div id="menu"></div>

お分かりになる方ございましたら、よろしくお願いします。
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-09-11 01:38
コード:
function get_menu() {
  filename = "http://test.com/sample/sample.txt";
  dojo.xhrGet( {
    url: filename,
    handleAs: "text",
    timeout: 1000,
    load: function(response, ioArgs) {

      alert(response); //<<== コレ

      dojo.byId("menu").innerHTML = response;
      return response;
    },
    error: function(response, ioArgs) {
      console.error("HTTP status code: ", ioArgs.xhr.status);
      return response;
    }
  });
} 



Java僧
ぬし
会議室デビュー日: 2003/11/06
投稿数: 261
投稿日時: 2008-09-11 08:55
dojoは使ったことがないのではずしているかもしれませんが、
“sample.txt”が“sample.html”でも動きは同じですか?
(Content-Typeによる動作の違いはありませんか?)
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-09-11 09:30
ありがとうございます。

Dojoのサンプルはかなり豊富でUIが他のprototype,jQeryよりも優れており、日本語文献は少ないですが、何とか実装を試みています。また、クロスブラウザにも対応しており、IE6,Safari,FireFox,Opera,Choromeの最新版でも動きました。(FireFox3では動作が遅い気がします)

指摘いただいたalertを出す件ですが、しっかり取得できていました。
また、HTMLに変えたのも結果は同じでスタイルシートが効いていない or Dojoのタグを認識するタイミングがずれている感じです。(おっしゃるようにContent-type=textが問題かもしれません・・)

やはり、innerHTMLでセットの仕方がまずいのかと思ってます。(document.writeでも試してみます)

また、お分かりになる方ございましたら、よろしくお願いします。
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-09-13 11:23
自己解決です。

dojoの基本的な流れが分かっていませんでした。
パースのタイミングがあり、明示的に指定する事でできました。
dojo.parser.parse();
1

スキルアップ/キャリアアップ(JOB@IT)