Domanda

Sto utilizzando il seguente codice HTML per caricare il dojo dall'hosting di Google.

<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");
...

Questo errore sulla riga requre con un errore come dojox.gfx non è definito.C'è un modo per farlo funzionare o Google non supporta le estensioni dojox?

In alternativa, esiste un altro host comune che posso utilizzare per le versioni standard del dojo?

È stato utile?

Soluzione

A differenza di quando fai riferimento ai file .js direttamente dal tag <script> (nota che anche google js api supporta questo, vedi Qui), google.load non è sincrono.Ciò significa che quando il tuo codice raggiunge google.load, non aspetterà che il dojo sia completamente caricato per continuare l'analisi;andrà direttamente alla tua linea dojo.require, e lì fallirà perché il file dojo l'oggetto sarà indefinito.

La soluzione (se non vuoi usare il tag diretto <script>), è racchiudere tutto il tuo codice che fa riferimento a dojo in un inizio funzione e impostarla come callback, eseguendo:

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

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

O

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

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

Altri suggerimenti

Una domanda migliore è: perché vorresti farlo?Se stai sviluppando sul tuo localhost, usa semplicemente un percorso relativo, se stai sviluppando su un server con connessione Internet, inserisci i file dojo su quello.

Inoltre, assicurati di non cadere in fallo stessa politica di origine

Credo che Google diventi lo spazio dei nomi per le tue librerie importate.Tentativo: google.dojo.require.

OH!E come sottolineato di seguito, non dimenticare di utilizzare google.setOnLoadCallback invece di chiamare direttamente la tua funzione.

dojox è praticamente privo di manutenzione e verrà rimosso da dojo-2.Ci sono grossi problemi con la maggior parte dei widget in dojox, ce ne sono solo alcuni buoni.

Il dojo IMHO dovrebbe essere ospitato autonomamente, perché ci sono sempre cose che devi sovrascrivere, ad esempio, hai bisogno di qualche correzione in questo dojox.gfx.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top