« IE7のセキュリティ機能/ フィッシングサイト対策 | トップページ | IE7とJavaScript(promtメソッドとセキュリティ) »

2006/10/30

IE7とAjax



Bフレッツ3ヶ月無料! JRのプロバイダ【サイバーステーション】

IE7の新機能には、他にも、XMLHttpRequest()メソッドのサポートが挙げられます。Ajaxで必ず出てくるものです。ただ、Windows版IE6やIE5でも、ActiveXを利用して可能でしたし、IE7でActiveX方式がサポートされなくなったわけでもありませんから、今までのJavaScriptのまま変更しなくても基本的には、大丈夫です。たとえば、よく見かけるAjaxのサンプルは以下のようなものでしょう。クリックするとsample.txt(UTF-8でエンコードされたファイル)の中身を読み込むというものです。





しかし、「基本的に」と書いたのにはわけがあり、ユーザーの中には、セキュリティに配慮してActiveXを無効にしたり、ActiveXを含むコンテンツの場合その都度ダイアログ表示させる設定にしているケースがあります。そうなると、ユーザーの設定あるいは選択によっては、こちらが見せたいと考えているコンテンツを見せられないことになりますから、「XMLHttpRequest()メソッドが使えるなら、できるだけXMLHttpRequest()メソッドを使った方がよい」となるでしょう。ですから、上のサンプルは、「if ~ else ~」のアルゴリズムを逆にして、「XMLHttpRequest()メソッドが使えるかどうか」を先に調べるようにした方がいいでしょう。

また、仮に、今後、IE7のシェアが圧倒的に伸びっていった場合に、「if(window.ActiveXObject){」を先に聞くのか「if(window.XMLHttpRequest){」を先に聞くのかで、わずかですが、パフォーマンスの違いが出てくるかもしれませ。今はIE7のシェアは3%程度であり、FirefoxやOpera、Safariなどを合わせても「XMLHttpRequest()メソッドをサポートするブラウザは少数派」でしょうから、アルゴリズム的に、何だかもったいない気がしますが・・・。

その他、IE6とIE7を区別して処理したいことがある場合に、ユーザーエージェントに頼らないで判別するには、この「XMLHttpRequest()メソッドをサポートするかどうか」でIE6とIE7の区別をするのも手でしょう。

なお、本記事のメインテーマとは全く関係ありませんが、Mac版IEでは、window.ActiveXObjectはtrueになりますが、「new ActiveXObject("Msxml2.XMLHTTP");」も「new ActiveXObject("Microsoft.XMLHTTP");」もサポートしていませんので、Ajaxプログラムは全く動きません。

また、Safariでは、工夫を凝らさないと、読み込んだsample.txtのファイルの中身(日本語)が文字化けします。これについては別の機会に対策を含めてご紹介したいと思います。



S-net ADSL 12Mコースなら月額1,995円。モデムもレンタル無料

|

« IE7のセキュリティ機能/ フィッシングサイト対策 | トップページ | IE7とJavaScript(promtメソッドとセキュリティ) »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67411/12488563

この記事へのトラックバック一覧です: IE7とAjax:

« IE7のセキュリティ機能/ フィッシングサイト対策 | トップページ | IE7とJavaScript(promtメソッドとセキュリティ) »