4

次のHTMLを使用して、Googleのホスティングからdojoをロードしています。

<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("dojo", "1.1.1");</script>
<script type="text/javascript">
dojo.require("dojox.gfx");
...

これは、dojox.gfxisundefinedのようなエラーでリクエストラインでエラーになります。これを機能させる方法はありますか、それともGoogleはdojox拡張機能をサポートしていませんか?

または、標準のdojoリリースに使用できる別の一般的なホストはありますか?

4

4 に答える 4

4

<script>タグから直接.jsファイルを参照する場合とは異なり(google js apiもこれをサポートしていることに注意してください。ここを参照)、google.loadは同期していません。これは、コードがgoogle.loadに到達したときに、dojoが完全にロードされて解析を継続するのを待たないことを意味します。dojo.require行に直接移動し、dojoオブジェクトが未定義になるため、そこで失敗します。

解決策(直接<script>タグを使用したくない場合)は、dojoを参照するすべてのコードをstart関数で囲み、次のようにしてコールバックとして設定することです。

google.load("dojo", "1.1.1", {callback: start});

function start() {
    dojo.require("dojox.gfx");
    ...
}

また

google.setOnLoadCallback(start);
google.load("dojo", "1.1.1");

function start() {
    dojo.require("dojox.gfx");
    ...
}
于 2008-09-18T05:03:43.940 に答える
0

googleがインポートされたライブラリの名前空間になると思います。試してみてください:google.dojo.require

おー!また、以下で指摘するように、関数を直接呼び出す代わりに、google.setOnLoadCallbackを使用することを忘れないでください。

于 2008-09-18T04:42:02.650 に答える
0

より良い質問は、なぜそうしたいのですか? ローカルホストで開発している場合は、相対パスを使用してください。インターネットに面したサーバーで開発している場合は、dojo ファイルをそこに貼り付けてください。

また、同じオリジンポリシーに違反していないことを確認してください

于 2008-09-18T04:43:47.077 に答える
0

dojox は実質的にメンテナンスされておらず、dojo-2 から削除されます。dojox のほとんどのウィジェットには大きな問題があり、良いものはわずかしかありません。

私見の dojo は自己ホスト型である必要があります。これは、上書きする必要があるものが常にあるためです。たとえば、この dojox.gfx を修正する必要があります。

于 2013-11-07T16:06:31.213 に答える