xrea-banner xreaad

通信手法

namespace kilrey; / JavaScript / AJAX / 通信手法

前のページ(非同期)へ / 次のページ(XMLHttpObject 通信)へ

実際に使える通信手段を挙げてみましょう。

まずは XMLHttpObject です。 JavaScript から XMLHttpObject を生成しますが、 Firefox, Opera, Safari などでは new XMLHttpRequest() 、 IE では new ActiveXObject("Msxml2.XMLHTTP") や new ActiveXObject("Microsoft.XMLHTTP") のように ブラウザごとに手法が異なります。 この生成部分は一つの関数としてまとめると良いでしょう。 ブラウザごとの相違を覆い隠してくれる クロスブラウザ・ライブラリを使うのも良いでしょう。

一般の JavaScript の XMLHttpObject では 現在のページを開いた元のサーバとしか通信出来ません。 これは他サーバに通信出来る場合には クッキーの漏洩などの安全上の問題が発生するからです。 インストールする前にスクリプトの内容を確認することが前提の ちなみに Greasemonkey ではこの制限がないので 他サーバで行われている Web サービスを流用して 自分の Greasemonkey サービスを行うことが出来ます。 また自分のサーバをプロクシとして経由すれば 他のサーバと通信することも出来るのですが、 その通信先のサービスの規約で禁止されていることも多いので 必ず確かめてからサービスを始めるようにしてください。

次は iframe 要素です。 iframe 要素の src として目的の URL を指定することで データを読み込んで利用するという手法です。 iframe に表示出来るものが対象なので 一般的には html 形式のデータに対して使われます。 XMLHttpObject が実装されていない 古いブラウザにも対応出来るのが利点です。 また XHTML の標準では iframe 要素が廃止されるので その場合には object 要素で代用します。 これについては後のページで実例を挙げます。 また現在のページを開いた元のサーバ以外のページも読み込めますが、 子ページの内容への親ページからの操作は禁止されます。 もちろん、自分のサーバをプロクシとして経由すれば可能ですが 同様に通信先のサービスの規約を確かめる必要があります。 ちなみに 子ページの window.location.hash は 親ページから読み出せることを使った通信も可能です。 http://d.hatena.ne.jp/shinichitomita/20060803/1154609128 で解説されているのが参考になります。

次は script 要素です。 script 要素の src として目的の URL を指定することで データを読み込んで利用するという手法です。 script として読み込めるものが対象なので 一般的には JavaScript で書かれたデータに対して使われます。 最近は JSON 形式でデータを提供するサービスも増えました。 これも XMLHttpObject が実装されていない 古いブラウザにも対応出来るという利点もありますが、 現在のページを開いた元のサーバ以外のスクリプトを読み込んだときに 親ページからそのデータを操作出来るというのが最大の利点でしょう。 ただし、読み込んだスクリプトから親ページを操作することも出来るので 通信先と通信経路が十分に信頼出来る場合しか使ってはなりません。

前のページ(非同期)へ / 次のページ(XMLHttpObject 通信)へ