HOME | ドキュメント |  ブログ  |  BBS  |  瓦版  | 将棋プロジェクト |  物置小屋   

駒台の画像表示 象歩ブログ JavaScriptで将棋盤
26 May 2008

将棋盤に Ajax を用いる

将棋  

棋譜の表示に Ajax の手法を使ってみた。 まずは棋譜を選択する機能を実装。 再描画はチラつきも発生せず問題無い。 ということは棋譜だけ自由に GET できると云うこと。 たとえば実況中継などの頻繁に更新される棋譜でも OK だろう。

とりあえず使えることは解った。ありがたや^^; でも、深入りはしない。


HTML のセレクト文は以下のようにし、 DTML のプロパティ game_uri には棋譜を保存してあるフォルダの URI を設定して置く。

<body onLoad='createDiag()'>
  <form action="" method="get" name="selectGame">
    <select onchange="queryScore()">
    <dtml-with "restrictedTraverse(getProperty('game_uri'))">
    <dtml-in "objectValues('ZShogi')">
      <option value="&dtml-absolute_url;"><dtml-var title_or_id></option>
    </dtml-in>
    </dtml-with>
    </select>
  </form>
</body<

JavaScript で HTML の 'GET' をおこなう箇所は以下の通り。

  var xmlhttp = false;
  if (window.XMLHttpRequest) {
    xmlhttp = new XMLHttpRequest();
    xmlhttp.overrideMimeType('text/plain');
  } else {
    try {
      xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
      } catch (e) {
        xmlhttp = false;
      }
    }
  }

  var scorelist = 'void'; 
  function queryScore() {
    var game = document.selectGame.elements[0].value;
      var url = game + '/pubGetScore';
      xmlhttp.open('GET', url, true);
      xmlhttp.onreadystatechange = updateDiag;
      xmlhttp.send(null);
  }
  function updateDiag() {
    if (xmlhttp.readyState == 4) {
      if (xmlhttp.status == 200) {
        scorelist = xmlhttp.responseText;
        createDiag();
      } else {
        alert('updateDiag: http status=' + xmlhttp.status);
      }
    }
  }

参考サイト

Comments
IE6でもOK

IE6 対応で修正。
JavaScript でエラーが発生するので const はやめて var 変数に変更。
透明部分の処理が変なので駒の画像を作り直した。

Posted by: owa at May 26,2008 23:48
Trackbacks

【注意】TrackBack 送信なさる場合、 あなたの記事中に参照リンク (当ブログの URL 記述) が必要です。 トラックバックスパム防止のため、御了承ください。

There is no trackback.
Post a comment











一回プレビューして投稿内容の確認をしてください。その後に投稿可能になります。