dojo.requireとクロスドメイン

dojo.requireはscript要素を使って読み込みんでいると思いこんでいましたが、XmlHttpRequestで読み込んでいるようですね。

クロスドメインに引っかかった旨を伝えるエラーがエラーコンソールに出ていなかったので、しばらく気づきませんでした。Dojoのデバッグ機構を使いこなせていない、という事でしょうか。

djConfig.useXDomainをtrueにした場合、クロスドメインでの読み込みが可能になる事は分かったのですが、dojo.requireについては"*.xd.js"というファイル名で読み込む事になるようです。

"*.js"から"*.xd.js"にコピるのも面倒だったので、別の方法で解決しておきました。

Dojo 0.4.2から、クロスドメインに対応した。これにより、Dojoのライブラリを自分で配置せずに、AOLのCDNで配信しているDojoのライブラリを直接参照して利用できる。AOLのCDNを直接参照するときは、以下のように記述する。 Editor Widgetなど一部の機能では、HTMLファイルをローカルサーバに置く必要がある。
<script type="text/javascript" src="http://o.aolcdn.com/dojo/0.4.2/dojo.js"></script>
Dojo/JavaScript Toolkitのメモ: Dojoインストール

↑を使う事で、特に何をするでもなくdojo.requireの際にクロスドメインからソースを読み込むようになります。

ちなみに、なぜ"クロスドメイン〜"な話になったかというと、DojoをDjangoのテストサーバ("./manage.py runserver 192.168.1.5:8000")に置く方法を(今も)知らないので、Apache("192.168.1.5:80")に置いて開発をしていたからです。

というわけで、無事、dojo.widget.Dialogを使ってLightbox的なモーダルダイアログ(って言うんですかね?)を使う事が出来ました。


そもそもテンプレートにJSを書いてしまっているのが駄目な気もしますが、テストサーバで簡単に済ませたいのでそれはご勘弁。
さて、Django+Dojoなんてフレーズが目に留まって冷や汗が止まりません。。。
(DjangoってDojoを含んでいるんでしたっけ?AOLから引っ張る方法でWidgetだかが実装されてる?)


やっぱり、開発中に外のサーバを参照するのも気持ち悪いので、"/usr/lib/python2.4/site-packages/django/contrib/admin/media/js/dojo"にリンクはってしのぎます。

プロフィール

このブログ記事について

このページは、koshigoeが2007年5月 6日 22:56に書いたブログ記事です。

ひとつ前のブログ記事は「python2.4-examplesってのがあるんだね」です。

次のブログ記事は「LineBuzzが気になる」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。