ajax(xmlhttprequest)で非同期取得したHTMLを、元のHTMLにinnerHTMLで流し込んでいます。

この取得したHTMLの中にJavaScriptがあるのですが、このJavaScriptが動いてくれません。このJavaScriptは外部ファイルに記述されています。
非同期ではなく通常のページに埋め込んで実行(サーバにアップして普通に取得するしてブラウザで表示)した場合は正しく動作しますのでスクリプト自体は問題ないと思われます。
この外部ファイルのJavaScriptを含むHTMLを非同期取得して尚且つスクリプトを走らせる方法はないでしょうか?
なお、該当の外部スクリプトを修正することは出来ません。
このままでは無理な場合は、なにか代案がありましたらお願いします。
(うっすらと思ってるのは、サーバでスクリプトを実行させて結果に置き換えてからHTMLを返すってことかな、とか思うのですが・・・。この方向での回答も是非。ポインター程度でもいいです。)

回答の条件
  • 1人5回まで
  • 登録:2006/08/31 16:55:39
  • 終了:2006/09/07 12:22:34

ベストアンサー

id:Mug No.12

Mug回答回数15ベストアンサー獲得回数32006/09/03 14:06:53

ポイント500pt

document.writeはファイルの読み込みストリームが閉じてしまってから、つまりファイルの読み込みを完了してからやると、白紙ページに遷移してそこに書き出そうとします。

また、外部JSファイルの、HTML読み込み後の動的なロードは、document.createElementを用いれば可能です。

動的ロードの前後でdocument.writeを自作の関数に付け替え、外部ファイルのdocument.writeの内容を一旦蓄えてから、任意の場所に出力すれば解決できるのではないかと思います。(ぎりぎりの線な気がしますが)

以下でやってみました。

http://d.hatena.ne.jp/Mug/20060903

id:metatron3rd

ご回答ありがとうございます。

サンプルはかなり良好でしたが、これを自分のサイトに組み込もうと思うとなかなか上手くいかず、お返事が遅くなってしまいました。

がんばってみます。

2006/09/04 00:34:00

その他の回答(13件)

id:irhnhhtn No.1

irhnhhtn回答回数15ベストアンサー獲得回数02006/08/31 17:30:54

ポイント30pt

自分もベテランではないので、更に良い回答があるかもしれませんが、

自分が作成した事のある仕組みを説明しますと・・・


1.まず、ベースとなるHTMLには、外部Javascriptのリンクを張っておきます。

(これは、あらかじめ静的に設定しておきます。)

<script type="text/javascript" src="hogehoge.js"></script>

2.HttpRequestで動的に読み込むHTML内には、jsファイル内で定義したfunctionを記述しておきます。

(サーバ側で用意するresponse用HTML文字列です。)

3.あとはAjaxロジックで、代入します。

document.getElementById("targetDiv").innerHTML = hogehogehoge.responseText;

id:metatron3rd

回答ありがとうございます。私もサンプルを拾ってきていじる程度しか出来ない素人ですし、実際に作成されたとの事ですのでご回答を理解できていないのかもしれないのですが・・・

1のように本体に書いてしまったら、本体をブラウザに読み込んだ時点で外部スクリプトが実行されて結果が表示されてしまいます。

なお情報として、このスクリプトは具体的にはBlogPeople提供のトラックバックピープルのスクリプトです。

もしよろしければご回答お待ちしております。

2006/08/31 18:02:57
id:takemori No.2

takemori回答回数29ベストアンサー獲得回数22006/08/31 17:56:52

ポイント10pt

他のサーバ上にあるjavascriptを読み込んで実行することは出来ません

javascriptを一旦サーバーに保管してそれを読み込むようにする

もしくは、iframeを利用してiframe内でHTMLをそのまま表示させる

などの方法を取るといいと思います。


http://amix.dk/greybox/demo.html

Greyboxなど無料で使えるライブラリもあります。

id:metatron3rd

・フレームは使わない方向で検討したいので、参考にさせていただきますが引き続き回答を待ちたいと思います。

・ご紹介いただいたGreyboxについて、ありがとうございます。

こちらも参考にさせていただきます。

2006/08/31 18:08:43
id:irhnhhtn No.3

irhnhhtn回答回数15ベストアンサー獲得回数02006/08/31 22:30:30

ポイント10pt

すみません、inputタグをサンプルコードとして載せたら、そのままボタンが表示されてしまいました。。。 (^-^A

「トラックバックピープルのスクリプト」を探しましたが、どれを指しているのかちょっと分かりませんでした。

(ただ、jsファイルをロードしただけで動き出す、という事は理解しました。)

で、前回の解答とは別の手法として、動的にscriptのsrcをコード上で動的に設定する事ができるみたいです。

ベースとなるHTMLに記述

<script type="text/javascript" src="" id="aaa" ></script>

外部のjsファイルを動的に設定。

document.getElementById("aaa").src = "test.js";

他にもっといい方法がある気がとってもしますが、とりあえず上記を使えば、やりたい事は実現できると思います。

id:metatron3rd

回答ありがとうございます。

スクリプトを実行したいHTML自体も非同期で取得している為か、取得したHTMLをinnerHTMLしてdocument.getElementById("aaa").src = "test.js";相当のことをさせてみたところ、document.getElementById("aaa") has no propertiesというエラーになりました。

また、実験として親HTMLにsrc=""としたSCRIPTタグを書きました。この親HTMLをロードしただけでSyntaxErrorと出ました。1行目の部分でした。

(この1行目はXHTML1Transitionalの宣言(?)があります。)

とりあえず無視してsrcにスクリプトファイルへのURLを入れてみました。

すると、srcにURLは設定されましたがスクリプトは走りませんでした。

不足情報も多いとは思いますが、私のやり方でもし何かお気づきでしたらご教授いただけますと幸いです。

取り急ぎ現状作成中の本番データで試した為に切り分けとかもさっぱりですので、

まずは簡単な例を作って試してみようと思います。

※エラー出力とは、FirefoxのJavaScriptコンソールに出力されているものです。

2006/08/31 23:57:21
id:ardarim No.4

ardarim回答回数896ベストアンサー獲得回数1442006/09/01 00:21:47

ポイント30pt

innerHTMLでスクリプトを含むHTMLを挿入する場合は、defer属性を指定する必要があるようです。

http://msdn.microsoft.com/library/default.asp?url=/workshop/...

When using innerHTML to insert script, you must include the DEFER attribute in the script element.

innerHTMLで取り込む前に、文字列の中のscriptタグをサーチして、deferを挿入することで何とかならないでしょうか?

id:metatron3rd

ご回答ありがとうございます。

まずはdeferと言うものを初めて聞いたので検索してみました。いくつもヒットしましたが、気になったものを抜粋してみます。

・スクリプトが文書の内容となるものを生成しない旨を示す

http://www.scollabo.com/banban/senior/ref/ref_s.html#s-scrip...

・この属性を指定すると、スクリプトが文書の内容を生成しないことをユーザーエージェントに伝えることができます。(JavaScriptであれば、document.writeで何かを書き出すようなプログラムがないなど。)ユーザーエージェントはスクリプトの実行を後回しにして、そのまま続けて文書の内容を表示することができます。script要素の中身が多すぎるときなどに有効です。

http://elastic965.80code.com/html4ref/script

と言うことなのですが、スクリプトはdocument.writeを実行します。

そして難点と言うか何と言うか、スクリプトは自前のものではなくて公開されているものを使うのみなので、スクリプトをどうにかすると言うことも出来ません。

ただ、それでも試すだけは試そうと言うことでやってみたのですが、ざっとやってみたところやはりスクリプトは走りませんでした。

(エラーらしいものもありませんでしたので実験がおかしいのかもしれませんが)

引き続きこの点も参考にしながら自分でも勉強してみます。

2006/09/01 01:04:28
id:ardarim No.5

ardarim回答回数896ベストアンサー獲得回数1442006/09/01 02:36:43

ポイント10pt

document.writeを使用しているのですね...


document.writeはDOMの構築が終わった後では正しく機能しないのではないでしょうか。

AJAXではHTMLを非同期に取得するため、HTML取得が完了し、取得したHTMLの中のスクリプトを実行する頃には大元のHTMLのDOMはロードが完了していると思います。そのため、document.writeは実行されているけれども、期待通りにHTML中に動的に埋め込まれないということになるのではないでしょうか。例えば、読み込んだスクリプトがalertだったらちゃんとポップアップするのでは??


1つの対策としてはXMLHttpRequestを同期モードで動作させてみてはどうでしょうか? 同期モードであれば、読み込んだHTMLのスクリプトを処理するタイミングでもまだDOMの構築が途中だと思いますので、正しく動くかもしれません。

id:metatron3rd

ご回答ありがとうございます。

勝手ながらこちらの返信は割愛させていただきます。

2006/09/01 10:49:24
id:ardarim No.6

ardarim回答回数896ベストアンサー獲得回数1442006/09/01 03:19:51

ポイント10pt

すみません。

質問の条件に「非同期」が入っていましたね。「同期」ではダメですか。。。


こういう方法ではどうでしょうか。


大元のHTMLで定義

var write_buffer = "";
function hooked_write()
{
    var i;
    for(i = 0; i < hooked_write.arguments.length; i++){
        write_buffer += String(hooked_write.arguments[i]);
    }
}

innerHTMLの前後

var original_write = document.write;
document.write = hooked_write;
write_buffer = "";
xxx.innerHTML = 流し込むHTML;
write_result.innerHTML = write_buffer;
document.write = original_write;

最初に、XMLHttpRequestで取得したHTMLをパーズして、scriptブロックの前または後に<div id="write_result"></div>を追加しておきます。

また、innerHTMLで流し込む前にdocument.writeを自前の関数に置き換えます。自前の関数では本来document.writeされるべき文字列を変数など(例ではwrite_buffer)に退避するようにします。

innerHTMLの処理が終わったら、退避しておいた文字列(document.writeされたはずのもの)をwrite_resultの中にinnerHTMLで流し込みます。


これは一番簡単な例ですので、複数のXMLHttpRequestを実行する場合や、取得するHTML中に複数のscriptブロックがある場合などはもっと工夫が必要です。

id:metatron3rd

ご回答ありがとうございます。

結果として、外部ファイルのスクリプトは動きませんでした。

(埋め込んだalertが反応しなかった、わざと書いた出鱈目構文にも無反応だったため動いていないと思います)

また、大元のHTMLに書いたhooked_writeも呼び出された形跡がありません。

(上記と同じ理由により)

また、IEではdocument.write = original_write;の部分で'original_write'は宣言されていませんというエラーが出ました。

なんというか、これはなかなか難しいことだったのですね。

反省してます;;

これが出来ないから、ブログのサイドバーの非同期表示って見ないのですかね。

ブログのサイドバーって冗長な情報が多すぎる気がするので

非同期通信で欲しい人にだけ見せてあげるというのはいい考えだと思ってたんですけど・・・

特にトラックバックリストやブログロール等はサーバが重い時間帯は来訪者を待たせるので、リストに興味がない人にとっては邪魔でしかないなんて思ってるのです。

(やりたいのもこれなんです)

2006/09/01 10:57:28
id:susie-t No.7

susie-t回答回数99ベストアンサー獲得回数182006/09/01 10:44:05

ポイント30pt

ちょっと論点がずれるかもしれませんが、この事象の原因は同期・非同期の問題ではなくて、innerHTMLに流し込まれたスクリプトタグは無視される、ということではないかと思います。

参考として、prototype.js(Element.updateメソッド)

では以下のように対応してます。

  • データのスクリプトタグ以外をinneHTMLに流し込む。
  • それから0.01秒後、データのスクリプトタグの内容をeval関数で実行する。

0.01秒後というのは描画が終わるのを待つということだと思います。その時点で扱うDOMが存在しないとエラーになるので。

見当違いでしたらすみません。

id:metatron3rd

ご回答ありがとうございます。

prototype.jsをダウンロードしてみてみましたが、今のところさっぱりです_no

ただ、確かにスクリプトについても考慮されているようですね。

参考にさせていただきます。

2006/09/01 11:33:07
id:susie-t No.8

susie-t回答回数99ベストアンサー獲得回数182006/09/01 13:58:47

ポイント10pt

すみません、あまり履歴も読まずに回答してしまって、的外れでした。

ご参考までに、prptotype.jsでの実装例を提示します。test関数の第一引数が流し込む要素(ID指定可)、第二引数が受信するデータのアドレスとなります。

[test.htm]
<html>
<head>
<title></title>
<script language="javascript" src="prototype.js" charset="utf-8"></script>
<script>
<!--
function test(element, src){
  new Ajax.Request(src, {onComplete:onload});
  
  function onload(req){
    var matchAll = new RegExp(Prototype.ScriptFragment, 'ig');
    var matchOne = new RegExp(Prototype.ScriptFragment, 'i');
	var str = req.responseText;
    var ary = str.extractScripts();
	for(var i = 0; ; i++){
	  if(!str.match(matchAll)) break;
	  str = str.replace(matchOne, "<span id='documentWriteResult" + i + "'></span>");
	}
    ary = ary.map(function(value, index){
	        return value.replace(/document\.write/g, "\$('documentWriteResult" + index + "').innerHTML += ");
	      });
	$(element).innerHTML = str;
    setTimeout(function(){ary.map(function(value){eval(value);})}, 10);
  }
}
//-->
</script>
</head>
<body>
<div id="test"></div>
<button onclick="test('test', 'test.txt');">TEST</button>
</body>
</html>
-------------------------------------------------
[test.txt]
AAA
<script>
document.write("BBB");
</script>
CCC
<script>
document.write("DDD");
alert("!");
document.write("FFF");
</script>

やっていることは、

  • データからscriptタグの内容を保持する。
  • データのscriptタグをspanタグに置き換える。
  • 保持したscriptの「document.write」を上記spanタグへ流し込むコードに変える。
  • データを流し込む。
  • scriptを0.01秒後に実行する。

となります。

scriptタグが複数ある場合でも対応できるようにしました。置き換えるspanタグには"documentWriteResult+(インデックス)"というIDを振っていますが、不具合がある場合はリテラルを変更してください。

お役に立てれば幸いです。

id:metatron3rd

ご回答ありがとうございました。

今回の場合には適用できないみたいですが、

それでもソースを出していただいて非常に勉強になりました。

ありがとうございます。

2006/09/01 15:27:52
id:susie-t No.9

susie-t回答回数99ベストアンサー獲得回数182006/09/01 14:53:13

ポイント10pt

すみません。スクリプトは外部ファイルなんですね。上記回答は無視してくださって結構です。

id:metatron3rd

勝手ながらこちらの返信は割愛させていただきます。

2006/09/01 15:27:56
id:ardarim No.10

ardarim回答回数896ベストアンサー獲得回数1442006/09/01 22:38:39

ポイント10pt

alertも動かなかったということで、innerHTMLではスクリプトは動かせなさそうですね。

ということでdocument.writeを使う方法を考えてみました。とりあえず手元の環境では動いているようですが、どうでしょうか。


<html>
<title>
test
</title>
<script>
function test(){

    function handleEvent(){
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                iframe1.document.open();
                iframe1.document.write("<base href=http:" + "//www.google.com'>");
                iframe1.document.write(xmlhttp.responseText);
                div1.innerHTML = iframe1.document.documentElement.innerHTML;
                iframe1.document.close();
                iframe1.document.open();
                iframe1.document.close();
            } else {
                div1.innerHTML = "communication error";
            }
        }
    }

    var xmlhttp = createXmlHttp();
    if (xmlhttp == null) {
        return;
    }
    
    xmlhttp.onreadystatechange = handleEvent;
    
    xmlhttp.open("GET", "http:" + "//www.google.com/webhp?hl=ja" , true);
    xmlhttp.send(null);
}
function createXmlHttp(){
    if (window.XMLHttpRequest) {             // Mozilla, Firefox, Safari, IE7
        return new XMLHttpRequest();
    } else if (window.ActiveXObject) {       // IE5, IE6
        try {
            return new ActiveXObject("Msxml2.XMLHTTP");    // MSXML3
        } catch(e) {
            return new ActiveXObject("Microsoft.XMLHTTP"); // MSXML2まで
        }
    } else {
        return null;
    }
}
</script>
<body>

<div id="div1">
DIV
</div>

<iframe id="iframe1" src="" width=0 height=0></iframe>
</body> </html>

なんかURLははてなで自動的にリンクに変換されちゃうので文字列分割してますが他に意味はありません。


  • 高さ0、幅0のダミーのIFRAMEを作っておきます。
  • ajaxで取得したHTMLをdocument.writeでIFRAMEに流し込みます。(スクリプトがIFRAME内で実行されます)。このとき外部スクリプト等を参照するためにBASEタグを追加します。
  • IFRAMEの内容(スクリプトが実行された結果)を本文にコピーします。
  • IFRAMEの内容をクリアします。(見えないIFRAMEなのでクリアしなくても問題はないですが...)
id:metatron3rd

ご回答ありがとうございます。

IE6ではほぼ望むような結果を得ることが出来ました。

Firefoxではフレームに非同期取得したデータが完全にロードされないようで、結果も残念ながらだめでした。

(フレームの領域を広げて確認しました。)

このような結果ですが、とにかく全く無理と言うわけでもないということを見せていただけて本当に感謝いたします。

これ以上を望むのは厳しいだろうな、とは思っているのですが、せっかくなので終了はもう少し待ってみようと思います。

なお、とりあえずこの方向で勉強してみますが、先にも返信の中で書いたとおり出来ればフレームは(iFrameも含めて)使わないで済ませたいとも思っています。

ありがとうございました。

2006/09/02 01:01:57
id:ardarim No.11

ardarim回答回数896ベストアンサー獲得回数1442006/09/02 17:56:09

ポイント10pt

document.writeは、DOMのパーズが終わってしまっているHTMLに対しては無効だと思いますので、フレームを使う以外に方法はないのではないかと思います。


フレームは、親HTMLとは独立したdocumentオブジェクト(上記のサンプルで言えばiframe1.document)を持っているので、document.open()で初期化してしまえば親HTMLに影響を与えずに再度document.writeが有効な状態に戻せます。

親HTMLでdocument.open()することもできますが、この場合は元のコンテンツが初期化されてしまうので意味がありません。


ダミーのdocumentオブジェクトを作ることができるならフレームを使わなくてもすみそうですが、その方法は見つかりませんでした。


ちなみに上のサンプルは1箇所間違いがありました。もしかして修正すればFirefoxでも動くかもしれません。(私の環境にはFirefoxが行っていないので確認はできていません。)

                  iframe1.document.open();
                iframe1.document.write("<base href=http:" + "//www.google.com'>");
                iframe1.document.write(xmlhttp.responseText);
                iframe1.document.close();
                div1.innerHTML = iframe1.document.documentElement.innerHTML;

最後の2行の順序が逆でした。close()する前にinnerHTMLを参照していたので、パーズが中断されてしまったのかもしれません。close()によってDOMパーズが最後まで終わると思いますので、Firefoxでも完全にロードできるかもしれません。

id:metatron3rd

ご回答ありがとうございます。

また、修正版まで出していただき感謝いたします。

こちらも参考にさせていただきます。

2006/09/03 18:21:34
id:Mug No.12

Mug回答回数15ベストアンサー獲得回数32006/09/03 14:06:53ここでベストアンサー

ポイント500pt

document.writeはファイルの読み込みストリームが閉じてしまってから、つまりファイルの読み込みを完了してからやると、白紙ページに遷移してそこに書き出そうとします。

また、外部JSファイルの、HTML読み込み後の動的なロードは、document.createElementを用いれば可能です。

動的ロードの前後でdocument.writeを自作の関数に付け替え、外部ファイルのdocument.writeの内容を一旦蓄えてから、任意の場所に出力すれば解決できるのではないかと思います。(ぎりぎりの線な気がしますが)

以下でやってみました。

http://d.hatena.ne.jp/Mug/20060903

id:metatron3rd

ご回答ありがとうございます。

サンプルはかなり良好でしたが、これを自分のサイトに組み込もうと思うとなかなか上手くいかず、お返事が遅くなってしまいました。

がんばってみます。

2006/09/04 00:34:00
id:Mug No.13

Mug回答回数15ベストアンサー獲得回数32006/09/06 01:37:32

ポイント50pt

がんばってみて…どうでしょうか?

私の前の投稿の、

AjaxWriter_NewとScriptLoadWithWriteメソッドをコピーして、

(※メソッド名はダサいので変えてくださいね)

AjaxWriter_New(str, targetObj)のようにtargetObjを引数から渡すように変更し、

metatron3rdさんのソースで

●.innerHTML = ★; // ●:ソースを入れるオブジェクト,★:入れるソース

のところを

AjaxWriter_New(★, ●);

とするだけでは?と思うのですが、きっとこれでは動かないのでしょう?!

動かない原因を書いてもらえれば、また協力もできるかも知れません。

発生しそうな問題点を想像でいうと、

・ScriptFilePointというname属性のタグが既にある

 →変数nameの値を被らないようなものに変える

・innerHTMLに流し込むソースのscriptタグは最小化してある

 →replaceの正規表現を変更します。

・後からロードするscriptファイルのロード時間が数秒以上かかる

 →recoverを起動するタイマーの時間をちょっと長くする

・innerHTMLに流し込むソースにはsrc値の違うscriptタグが複数ある

 →サンプルの想定外なので、ScriptLoadWithWriteの修正必要(要相談)

くらいでしょうか。

クロージャが終わったところでscriptsがちゃんと取れているか,タグの置換がちゃんとできているか,JSファイルの動的ロードが成功しているか,そのファイルからダミーのdocument.writeが呼ばれて走っているか の順で調べてみては如何でしょうか。

id:metatron3rd

ご回答ありがとうございます。

また、手厚くフォローしていただいて本当に感謝いたします。

私が望む動作は全て実現できました。

ですが、せっかくですので質問させていただきます。

********

・innerHTMLに流し込むソースのscriptタグは最小化してある

 →replaceの正規表現を変更します。

********

この最小化というのが何を指すのが分かりませんでした。

********

・innerHTMLに流し込むソースにはsrc値の違うscriptタグが複数ある

 →サンプルの想定外なので、ScriptLoadWithWriteの修正必要(要相談)

********

この点は、ここまで答えていただいているのにさらにお聞きするのも申し訳ないな、と思っていたのですが、(『う゛~ん、これは許して。』との事でもありましたし)、相談させていただけるのであれば是非。

複数のスクリプトに対応していただければ確かに完璧です。

今は、一つの非同期ロードに対してスクリプトは書いても一つまでと決めていますが、

この点解決策があると本当に助かります。

2006/09/06 17:47:32
id:Mug No.14

Mug回答回数15ベストアンサー獲得回数32006/09/07 02:03:52

ポイント50pt

タグの最小化とは、
<script...属性...></script>
 ↓
<script...属性.../>
とすることです。


複数のスクリプト対応ですが、少なくとも数日では無理です。
(作業時間のみでも最低半日くらいはかかりそう。仕事もわりと忙しいので申し訳ないですが。)
つまり、この質問が自動的にCloseするまでには絶対間に合いません。
なので、まず修正すべき箇所を探してみましたが、いろいろありました。
ここではそれだけ挙げさせてください。

自分のソースを見ていて、バグばっかりだなぁと少々恥ずかしいですが、複数の<script>タグに対応するには、(バグも含めて)以下の修正が必要と思います。

※今のところ、1つの<script>で発生するバグは見つけてはいませんが、いやはや…。

(1)正規表現が複数の<script>タグに対応していない

 →正規表現を修正

(2)全て外部ファイルでありsrc属性を持っていることを前提としたソースになっている

 →srcのあるもののみ、リストアップ&置換する正規表現に変更

(3)最小化された<script>タグに対応していない

 →正規表現での置換を追加

(4)ScriptLoadWithWriteの大幅な改造が必要

 【理由】

 現在は1つ1つのスクリプトのロード完了を待たずに次をロード開始しています。
外部JSファイルと外部JSファイルの処理の間に本体側の処理を挟めればなんとかなりますが、それが失敗したら、どのファイルからdocument.writeされているか本体側で区別が付きません。バッファもクリアしなければならないし、それをどこに書き出していいか判りません。

 【対応】

 呼び出し方・使い方も変更して、〔隠蔽→動的ロード→ファイルの内容を実行→戻し&書き出し〕を順々に繰り返す、つまり今のソースのように並行して読み込みさせないように作り変える必要があると思います。


とりあえず最低あと1回は、1~2週間以内くらいに、この質問スレッドにコメント(になるのかな)するか、自分のブログに何か書くかします。
「やっぱり時間的に厳しい」になるかもしれませんが、そのときはご了承ください。

id:metatron3rd

ご回答ありがとうございます。

せっかく書いていただいた内容のほとんどを理解できていなくて申し訳ないのですが、複数対応について実現されると本当にうれしいです。

でも、大変そうですし、厳しいようでしたらご無理なさいませんよう・・・。

ブログの方、これからもこれに限らずチェックさせていただきます。

今回は皆様のご回答を頂いて大変勉強になりました。

そして、望む動作も実現できました。

本当にありがとうございました。

これにて閉めさせていただきます。

2006/09/07 12:19:10

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません