私たちのサイトでは、Javascriptwww.foo.com
をダウンロードして使用したいと考えています。http://feeds.foo.com/feed.xml
明らかにAccess-Controlを使用しますが、Access-Controlをサポートしていないブラウザーの場合、フォールバックとして次のことを検討しています。
でwww.foo.com
、を設定document.domain
し、コールバック関数を提供し、フィードを(非表示)にロードしますiframe
。
document.domain = 'foo.com';
function receive_data(data) {
// process data
};
var proxy = document.createElement('iframe');
proxy.src = 'http://feeds.foo.com/feed.xml';
document.body.appendChild(proxy);
feeds.foo.com
で、XSLをに追加し、それfeed.xml
を使用してフィードをhtmlドキュメントに変換します。このドキュメントはdocument.domain
、フィードデータをjsonとして親にコールバック関数を設定して呼び出します。
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="ROOT">
<html><body>
<script type="text/javascript">
document.domain = 'foo.com';
parent.receive_data([<xsl:apply-templates/>]);
</script>
</body></html>
</xsl:template>
<!-- templates that transform data into json objects go here -->
</xsl:stylesheet>
feeds.foo.comからXMLをロードするためのより良い方法はありますか?このiframe-proxy / xslt / jsonpトリックの影響は何ですか?(..そしてどのような場合に失敗しますか?)
備考
- これはSafariとChromeでは機能しませんが、どちらもAccess-Controlをサポートしているため、問題ありません。
- 変更をほとんどまたはまったくしたくない
feeds.foo.com
- サーバー側のプロキシソリューションを認識しています(ただし、関心はありません)。
- 更新: それについて書いた