私は、いくつかのカスタムDojoウィジェット(つまり、自分で作成したウィジェット)を別のサーバーからロードする必要があるプロジェクトに取り組んでいます。数日間の最善の努力にもかかわらず、Dojoにウィジェットをロードさせることができないようです。
DojoはGoogleCDNから読み込まれ、ウィジェットはwww.example.comから読み込まれ、ウェブサイトはwww.foo.comにあります。
実際のプロジェクトファイル(これは会社のプロジェクトです)を投稿できませんが、より小さなテストファイルでエラーを再現しました。
Test.html(www.foo.com):
<html>
<div id="content"></div>
<script>
var djConfig = {
isDebug: true,
modulePaths: {
'com.example': 'http://example.com/some/path/com.example'
}
}
</script>
<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.4.3/dojo/dojo.xd.js.uncompressed.js"></script>
<script type="text/javascript">
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
dojo.addOnLoad(function() {
dojo.require("com.example.widget.Test", false);
dojo.addOnLoad(function() {
new com.example.widget.Test().placeAt(dojo.byId('content'));
});
});
</script>
</html>
Test.xd.js(www.example.com/some/path/com.example/widget/Test.xd.js):
dojo.provide("com.example.widget.Test");
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
dojo.declare("com.example.widget.Test", [dijit._Widget, dijit._Templated], {
templateString: "<div dojoAttachPoint=\"div\">This is a test</div>",
postCreate: function() {
console.log("In postCreate");
console.log(this.div);
this.div.innerHTML += '!!!';
}
});
Firebugでは、クロスドメインリソースcom.example.widget.Testを読み込めないというエラーが数秒後に表示されます。ただし、[ネット]タブでは、Test.xd.jsが正常にダウンロードされ、ブレークポイントを設定して、dojo.declareがエラーなしで実行および完了することを確認できます。
助けていただければ幸いです。他にご提供できる情報がありましたらお知らせください。