JavaScriptでは、セキュリティ上の制限により、違うドメインのXMLを読み込むことができません。

一方Flashでは、crossdomain.xmlにより許可されたドメインからはXMLの取得が可能です。

そこで、FlashのExternalInterfaceを利用して、JavaScript側で指定したURLからFlashでXMLを取得して、その結果をJavaScriptに返すだけの小さなswfファイルを作成しましたので公開します。

まずは、こちらのサンプルページをご覧ください。

ダウンロード

ダウンロード(CrossOver.zip)

パッケージ内容

PHPやCGIが不要です!

  1. CrossOver.swf
  2. CrossOver.js
  3. swfobject.js

利用方法

</body>の直前あたりに以下のソースを貼り付けてください。
パスは環境にあわせて修正願います。

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

ボタンクリックなどのイベントでloadCrossOver()という関数を実行してください。
引数には、コールバック関数名及びXMLのURLを渡してください。
(コールバック関数名はダブルクォーテーション等で囲む必要があります。)

また、XMLリクエストが成功した際に実行されるコールバック関数を定義してください。

詳細は、サンプルページなどもご参照ください。

// XMLHttpリクエストをFlashにしてもらう関数
oButton.onClick = function{
  loadCrossOver( 'callback', 'http://example.com/feed.xml' );
}
// 上記関数の第一引数と同じ名前の関数を定義
function callback( XMLString ){
.......... // XMLに対する処理
}

コールバック関数の引数には、取得したXMLのString型データが渡されますので、XML.ObjTree等と併用することで、オブジェクトとして利用可能です。

ライセンス

MITライセンスとします。

ただし、気に入っていただけた方からの寄付は歓迎します。

ご注意

crossdomain.xmlで許可されていないサイトのXMLにはアクセスできません。
他の手を考えましょう。