lojaxを使ったWhat's New

AJAXでWhat's Newを再度作ってみた.
前回のと違って今回はLoJAX (Low-technology AJAX)を使用して作ってみた.
LoJAX What's New

といっても,responseTextをdivタグのしたに流し込んでいるだけなのであれですが,MacIE5.xでは文字化けしちゃいます...
なんでだろう...
そもそもLoJAXを使用してデータが取れるのはいいんだけど,MacIE5ではresponseXMLとしてDOMが確立されてなくresponseTextにテキストが入っただけの状態で返ってくるのでDOMのメソッドを用いたデータの取得ができない...
となると正規表現とかで取得するとかでしょうか?
でも,そもそも文字化けしてるし...
あきらめるしかないかな…?

/**
* 読み込むことでBlogの最新記事とTOPICSを指定のオブジェクトへ表示させる
* <code>showTopics()</code>メソッドを提供する.
* {@link http://www.brothercake.com/site/resources/scripts/lojax/ lojax}を使用して
* Mac IE5以降でも動作するように実装したがなぜか文字化けを起こす...
* 
* @link    http://www.brothercake.com/site/resources/scripts/lojax/
* @usage  <pre>
*         <body onload="javascript:showTopics();">
*         </pre>
*         と,bodyタグのonloadイベントハンドラにて呼び出す.
* @author nao seto (seto@graffiti-web.org)
*/

/**
* windowオブジェクトへのエイリアス.
*
* @param  window
*/
var target = this;

/**
* TOPICSのXMLへのパス.
*
* @param  String
*/
var TOPICS_XML = 'topics.xml';

/**
* HTTP通信を行う XMLHttpRequestオブジェクト.
*/
var xmlHttpRequest;

/**
* TopicsのXMLを読み込み終わったときのイベントハンドラ.
*/
var _onLoadTopicsXML = function () {};

/**
* Topicsの表示が終わったときのイベントハンドラ.
*/
var _onInsertTopics = function () {};


/**
* Topicsをid="topics"要素の子要素としてXMLのまま表示させる.
*/
this.showNews = function() {
  target.xmlHttpRequest = target._createXMLHttpRequest();
  
  if (xmlHttpRequest == null)
    return;
  
  // 各イベントハンドラの割り当て
  this._onLoadTopicsXML = this._insertTopics;
  this._loadTopicsXML();
};

/**
* XMLHttpRequestオブジェクトを作成する.
*
* @return  XMLHttpRequest
*/
this._createXMLHttpRequest = function() {
  try {
    return new XMLHttpRequest();
  }
  catch (e) {
    try {
      return new ActiveXObject('Microsoft.XMLHTTP');
    }
    catch (e) {
      return null;
    }
  }
  
  return null;
};


/**
* TopicsのXMLを読み込みにいく.
*/
this._loadTopicsXML = function() {

  target.xmlHttpRequest.onreadystatechange = function() {
    if (target.xmlHttpRequest.readyState == 4 &&
      /^(200|304)$/.test(target.xmlHttpRequest.status.toString())) {
      target._onLoadTopicsXML(target.xmlHttpRequest.responseText);
    }
  };
  
  target.xmlHttpRequest.open('GET', target.TOPICS_XML, true);
  target.xmlHttpRequest.send(null);

};

/**
* HTMLに新着情報をXMLから書き込む.
*/
this._insertTopics = function(topics) {
  var topicsDiv = document.getElementById('topics');

  topicsDiv.appendChild(document.createTextNode(topics));
};


contributor nao : 2006年11月14日 16:52

trackback

trackback for this entry URL:
http://blog.graffiti-web.org/mt/mt-tb.cgi/462

comment