JavaScriptでは、セキュリティ上の制限により、違うドメインのXMLを読み込むことができません。
一方Flashでは、crossdomain.xmlにより許可されたドメインからはXMLの取得が可能です。
そこで、FlashのExternalInterfaceを利用して、JavaScript側で指定したURLからFlashでXMLを取得して、その結果をJavaScriptに返すだけの小さなswfファイルを作成しましたので公開します。
ダウンロード
パッケージ内容
PHPやCGIが不要です!
- CrossOver.swf
- CrossOver.js
- 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にはアクセスできません。
他の手を考えましょう。
Pingback: クロスドメインでAJAX - PHP・AJAX・Linuxサーバーのシータネットワークス
Pingback: noisecat Blog - IEtesterはレンダリングだけかな…