without used the solucionar refreshing page method descargar como another javascript internet-explorer parsing dojo

used - void(0) javascript href



Usando Dojo 1.9, todo el anĂ¡lisis falla en IE (3)

Así que tengo una aplicación web bastante grande que ejecutaba Dojo 1.8. Todo funciona bien en múltiples versiones de IE y Firefox. Decidí dar un 1.9 y cambiar mi dependencia de 1.8 a 1.9. Firefox funcionó bien sin cambios notables en la primera ejecución. Sin embargo, las versiones 8 y 9 de IE no lograron hacer casi nada. Todo el contenido HTML estático (y el contenido dinámico de jsp) estaba bien, y todas las llamadas ajax para obtener los módulos requeridos parecían funcionar bien, pero el analizador actuó como si nunca hubiera sido llamado. No hubo errores, advertencias ni nada en la consola.

Seguí jugando con mi configuración dojo, que no es nada especial:

var dojoConfig = { baseUrl: "js/", async: true, has: { "dojo-firebug": true, "dojo-debug-messages": true }, parseOnLoad: false, isDebug: true, tlmSiblingOfDojo: false, packages: [ { name: "dojo", location: "dojo-release-1.9.0/dojo" }, { name: "dijit", location: "dojo-release-1.9.0/dijit" }, { name: "dojox", location: "dojo-release-1.9.0/dojox" } ] };

Descubrí que si comento async: cierto, IE de repente comienza a funcionar de nuevo. Como se puede imaginar, realmente quiero tener asincrónico verdadero. ¿Por qué se está disparando IE? Espero haber proporcionado suficiente información.

editar: Invoco el analizador incluyendo una etiqueta de script en la parte inferior de la etiqueta para un archivo llamado common.js, que se ve más o menos así:

require([ "dojo/parser", "dojo/ready" ], function(parser, ready){ ready(function(){ parser.parse(); }); });

¡He intentado intercambiar dojo / listo para dojo / domReady! y sacando el parásito.parse del bloque listo (función () {también con los mismos resultados.


Creo que de alguna manera, el analizador se llama demasiado temprano. Usando la forma síncrona de carga (poniendo async en false ), lleva bastante más tiempo cargar todo. Tuve un problema similar una vez y al usar una prioridad más baja (= valor más alto) logramos ready evento lo suficientemente tarde para que todo funcione.

¿Puedes probar esto?

require([ "dojo/parser", "dojo/ready" ], function(parser, ready){ ready(1001, function(){ parser.parse(); }); });

Si no funciona, intente usar un número aún mayor. Puede que no sea una solución limpia, pero podría funcionar.

El número 1001 no está hecho por cierto. En Dojo hay algunas prioridades "reservadas", cuando no se especifica una prioridad, se usa la prioridad 1000. También hay algunos otros números, cuando usa la prioridad 80, por ejemplo, se ejecutará antes de que ocurra el análisis automático.



Me atrevo a marcar mi propia respuesta como correcta sobre Bill Keese, el líder de Dijit ... :)

Pero en serio, ya que Bill publicó esto, el problema real ha sido corregido y comprometido. Esto fue abordado en el boleto # 17141 en Dojo e incluido en la última versión 1.9.1:

https://bugs.dojotoolkit.org/query?group=status&milestone=1.9.1

La actualización de esta versión corrige el problema y IE funciona bien ahora.