Dojoは、デフォルトでは読み込み元HTMLと同じサーバに置くことを前提に作られています。
具体的には、dojo.require()が、XMLHttpRequestを使ってデータを取得します。
このため、同じドメインにライブラリを設置できない場合(共有サーバで権限が無い時など)、クロスドメインの制限でdojo.require()が失敗してしまいます。
dojo.parserなどの内部でrequireを使っているため、ライブラリの読み込み時点でエラーが多発してしまいます。
この場合は、クロスドメインビルドしたdojoライブラリ(XDomain Dojo)を使用します。
方法1: AOLを使用
お手軽に使うには、AOLのCDNを活用します。
http://dev.aol.com/dojo に書いてあるように、以下の形式でdojoライブラリを読み込むだけでOKです。
<script type=”text/javascript” src=”http://o.aolcdn.com/dojo/1.3/dojo/dojo.xd.js”></script>
この場合、dojo.requireは、デフォルトで用意されているdojo, dijit, dojoxのみ使用可能で、自前のコンポーネントは使用できません。
方法2: クロスドメインDojoのビルド
方法1はお手軽ですが、AOLのサーバが重いとか、自前で設置したいこともあると思います。
その場合、Dojoをソースからビルドします。
1. ソースを入手
まず、Dojoのダウンロードサイトから、ソースを取得します。dojo-release-1.3.0-src.zip のように、srcが付いているものがソースです。
- ダウンロードサイト: http://download.dojotoolkit.org/
2. ビルド
そして、以下のページの手順に従い、ビルドします。
具体的には、以下のコマンドでビルドできます。(Linuxの場合)
xdDojoPathに、Dojoライブラリを設置するディレクトリ名を記述します。テスト環境と本番環境ではURLが違うと思うので、その場合は2回ビルドする必要があります。
パックするライブラリを変更したい場合は、profileを変更します。
$ cd util/buildscripts
$ build.sh profile=standard loader=xdomain xdDojoPath=//www.bpsinc.jp/dojoxd action=release
以上のコマンドを入力すると、ビルドが始まり、しばらくするとreleaseフォルダにXDomainビルドされたDojoが生成されます。
3. 設置
xdDojoPathに設定したフォルダに、dojoを設置します。
上記の例では、DocumentRootのdojoxdフォルダに、dojo/dijit/dojox が入っている状態になります。
4. 読み込み
あとは、
<script type=”text/javascript” src=”https://www.bpsinc.jp/dojoxd/dojo/dojo.xd.js”></script>
のように読み込めばOKです。