Pregunta

Estoy usando el siguiente html para cargar dojo desde el alojamiento de 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");
...

Esto produce un error en la línea requerida con un error como dojox.gfx no está definido.¿Hay alguna manera de hacer que esto funcione o Google no admite las extensiones dojox?

Alternativamente, ¿existe otro host común que pueda usar para lanzamientos de dojo estándar?

¿Fue útil?

Solución

A diferencia de cuando hace referencia a los archivos .js directamente desde la etiqueta <script> (tenga en cuenta que la API de Google JS también admite esto, consulte aquí), google.load no es sincrónico.Esto significa que cuando su código llegue a google.load, no esperará a que dojo esté completamente cargado para seguir analizando;irá directamente a la línea dojo.require y fallará allí porque el dojo El objeto no estará definido.

La solución (si no desea utilizar la etiqueta <script> directa) es encerrar todo el código que hace referencia al dojo en un comenzar función, y configúrelo como una devolución de llamada, haciendo:

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

Otros consejos

Una mejor pregunta es: ¿por qué querrías hacerlo?Si está desarrollando en su servidor local, simplemente use una ruta relativa, si está desarrollando en un servidor con acceso a Internet, pegue los archivos dojo en él.

Además, asegúrese de no infringir las política del mismo origen

Creo que Google se convierte en el espacio de nombres para sus bibliotecas importadas.Intentar: google.dojo.require.

¡Oh!Y como se señala a continuación, no olvide usar google.setOnLoadCallback en lugar de llamar a su función directamente.

dojox prácticamente no tiene mantenimiento y será eliminado del dojo-2.Hay problemas importantes con la mayoría de los widgets en dojox, solo unos pocos son buenos.

En mi humilde opinión, el dojo debería ser autohospedado, porque siempre hay cosas que necesitas sobrescribir; por ejemplo, necesitas alguna corrección en este dojox.gfx.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top