1 |
2 |
3 |
全部読む
2006年4月27日
久々、Ajaxネタ。
なんだか意味深(?)なタイトルだけど・・・
IEでAjaxを実践する時に、
var xmlhttp = new ActiveXObject("Microsoft.XMLDOM");
とかするわけなんだけど、
良かれと思って、
Msxml2.XMLHTTP.5.0 や Msxml2.XMLHTTP.4.0 など、
ちょっとバージョンの違うものがインストールされてる環境でも
使えるようしてました。
しかし・・・
たしか、2ヶ月前くらいまでは問題なかったんですけどね、
先日、ふと自分のサイトをいろいろ見てたら
動かないところがあるんですよ~!!!
それは、Ajaxlstを実践してたところで、
調べたところ、バージョンが違うっていうエラーが出てるんですね。
まぁ、心当たりはあったので、すぐに
Msxml2.XMLHTTP.5.0 や Msxml2.XMLHTTP.4.0 ではなく、
Msxml2.XMLHTTP や Microsoft.XMLHTTP を優先して使うように変更しました。
それで、一応、サイト自体は事なきを得たわけですが、
なぜそうなったかを考えると、Windows Update しか思いつかない。
特に、IEのパッチとかだと、こっそり変更されてたり、
あるいは修正を加えた別の箇所の影響でおかしくなってたりするのかもしれない。
とりあえず、Windows Update したら、Ajax を使ってるサイトは動作確認したほうがいいと思う。
≪ "AjaxとWindowsの微妙な関係"の続きを隠す
投稿者 ponpon : 22:31
| コメント (0)
| トラックバック(1)
| 【Ajax】
2005年9月 9日
Ajax というか、Google Maps API を使った時の違いなのだけど、
これは意外と痛いと思う人もいるかもな~と思ったことがあります。
それは何かというと・・・
Google Maps API に表示するアイコンの画像を変更することが出来るのですが、
アイコン画像をアニメーションアイコンにすると・・・
IE ではただの画像(アニメーションしない)が、
Firefox ではアニメーションしてる!
ってことに気付いた。
まぁ、アイコンを変更しないなら関係ないことだけども。
画像の扱いが、IE と Firefox で違ってたりするので、その関係なのかなぁ~。
ただ、アニメーションさせたい!って思ってる人には、結構痛いと思ったし、痛かった。
Google Maps API でアイコンを変えたい!と思った人は、
こちらで解説しているのでどうぞ。
≪ "IEとFireFoxの違い(2)"の続きを隠す
投稿者 ponpon : 10:17
| コメント (0)
| トラックバック(0)
| 【Ajax】
2005年8月24日
広島っぷに好敵手が現れた!
新潟マップ書き込め~るだ。
向こうはそんなつもりはないかもしれないが、
こちらから見れば明らかにやりたいことがかぶってる!
全く同じではないが、そんな細かいことはどうでもいい。
というか、パクられてる(?)などと思いつつも、
せっかくなので、こちらも対抗して、書き込めるようにしてみた。
データの送信にもこだわって、Ajaxにしてみた。
今回は、Google Maps API のXMLHttpを利用した。
もちろん、自前のAjaxエンジンとかあればそちらでも構わない。
新潟マップでも送信をAjaxで実行しようとしていたので、
敵に塩を送ることになるが、
送信部分のみをさらしてみる。
Form の名前は frm としてます。自分のサイトに合わせて変えてくださいね。
まず、フォームfrmの内容から送信する文字列を作成します。
別に違う方法でも良いけど、まぁ参考までに。
この時に、入力チェックをしておくのも良い。
ちなみに、広島っぷではここに来る前に入力チェックは済ませています。
var data = new String();
for( var i = 0 ; i < document.frm.elements.length ; i++ ){
if( !document.frm.elements[i].disabled ){
data += "&";
data += document.frm.elements[i].name;
data += "=";
data += document.frm.elements[i].value;
}
}
if( data.length > 0 ){
data = data.substring(1);
} else{
window.alert("POSTするデータがありません。")
return false;
}
次に、"XMLHttpRequest"を使えるようにします。
var request = GXmlHttp.create();
その後、いつものように実行するのですが、
request.open("POST", "xxx.cgi?mode=xxx", true);
のように、"
POST"にしておきます。
上記のように、"
xxx.cgi?mode=xxx"のようにしておくと、
"
mode"の値は"
Get"データとして受け取れます。
次に、
request.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded");
と記述しておかないと、動かないブラウザがあるようです。
なので、必須かもね。
request.send(data);
で、最初に作成した文字列データを送信します。
データの内容は"
POST"データで受け取れます。
送信後、なんらかのデータが返ってきて、それを表示する場合には、
if (request) {
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
var xmlDoc = request.responseXML;
以下略
}
}
request.open("POST", "xxx.cgi?mode=xxx", true);
request.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded");
request.send(data);
}
とかやっても良いですよ。
≪ "広島っぷ、危うし!?"の続きを隠す
投稿者 ponpon : 10:17
| コメント (2)
| トラックバック(0)
| 【Ajax】
2005年8月23日
Ajaxって、万能ではないんですよねぇ。
ブラウザで動作が異なることもあるし(「IEとFireFoxの違い(1)」)
さらに、もっと致命的(?)な弱点もあるんですよ~
それはなにかっていうと、
Ajaxで読み込んだページ内のJavaScriptは動かない場合があるってこと。
ちょっと説明し難いのですが、
Ajaxで読み込んだページ内に、
例えば「ボタンを押したら動作する」とかとは違って、
読み込んだら動作するようなJavaScriptを記述していても、
動かないのです。
これはIE、Firefox共に動きませんでした。
ちなみに、昨日はテストしていないのでうろ覚えですが、
「ボタンを押したら動作する」などのイベントに起因するものは動いた・・・と思います。
では、どうすればいいのかなぁ~と思うのだけど、
Ajaxで読み込んだページを表示する前か表示した後に、
必要な処理をむりやり実行すればいいのでは?としか思いつかなかった。
例えば、その処理をfunctionとかにしておいて、
読み込んだページの表示直後に呼び出すとかね。
読み込んだページ内で実行されなくなるのなら、
親画面(Ajaxで読み込んだページを表示させる画面)に全てのJavaScriptを用意しておき、
子画面(Ajaxで読み込むページ)はデザインだけにしておくのが良いのかもしれないですね。
≪ "Ajaxで出来ないこと(1)"の続きを隠す
投稿者 ponpon : 16:10
| コメント (0)
| トラックバック(0)
| 【Ajax】
2005年8月17日
盆連休は、インターネットの出来ない実家に帰省していました。
Ajaxを用いた掲示板を作って、みんなにダウンロードしてもらおうとか
いろいろ考えていたのに、なにも出来ず・・・
で、なにかネタがないものかなぁ~と思っていたときに、ふと思い出したので、
IEとFireFoxでのAjaxの挙動の違いについて紹介することにした。
IEとFireFoxでは、JavaScriptが、
一方では動き、もう一方では動かなかったりという
JavaScriptの違いがあるが、それ以外にも違うことがあるのだ~!
AjaxであるHTMLを読み込んだ時、
その読み込んだHTML内でスタイルシートを宣言していた場合。
つまり、HTML内で、
<STYLE TYPE="text/css">
H1 { color: red; }
</STYLE>
などと記述していた場合、または、
<LINK REL="stylesheet" TYPE="text/css" HREF="../css/xxx.css" />
と記述していた場合に、
IEの場合は、スタイルシートが反映されないが、
FireFoxでは、スタイルシートが反映されていた!
という違いがあった。
詳しく実験してはいないので、あまり自信満々に言い切れないのだが・・・
で、対応はというと、
読み込んだHTMLを表示するページ、まぁ要するに親ページに
<LINK REL="stylesheet" TYPE="text/css" HREF="../css/xxx.css" />
と記述しておくか、もしくは、読み込むHTMLのスタイルシート適用箇所に
直接記述しておけば良い。
つまり、上の例で言うと、読み込むHTMLのH1を、
<H1 style="color: red;">
というようにしておけばいい。
が、これだと全ての箇所に記述しないといけないので、少々面倒になるけどね。
ということで、今回の教訓。
IEでAjaxを使う時は、スタイルシートに気をつけろ!
≪ "IEとFireFoxの違い(1)"の続きを隠す
投稿者 ponpon : 22:51
| コメント (0)
| トラックバック(0)
| 【Ajax】
1 |
2 |
3 |
全部読む