javascript - internet - jquery support
jQuery $(document).ready() falla en IE6 (12)
¿Estás seguro de que jQuery está cargado? Prueba la depuración con alertas como:
alert(typeof $);
También puedes probar una sintaxis diferente:
$(function() {
clearInterval(timer);
});
Ok, por lo que de su comentario, lo anterior no ayuda. El error "objeto esperado" parece ocurrir con un error de sintaxis en mi experiencia. ¿Es ese el código exacto que tienes? Si no, ¿podrías publicarlo?
Tengo el siguiente código:
// Creates a timer to check for elements popping into the dom
timer = setInterval(function ()
{
for (p in pixelTypes)
{
checkElems(pixelTypes[p]);
}
}, 10);
// Add Document finished callback.
$(document).ready(function ()
{
// Document is loaded, so stop trying to find new pixels
clearInterval(timer);
});
En Firefox, funciona muy bien, pero en IE6, aparece el error "Objeto esperado" en la línea $ (documento) .ready.
No puedo entender lo que causaría que IE6 no lo reconozca, jquery está completamente cargado en este punto.
¿Es esto un problema conocido?
No creo que realmente deba sondear los elementos de la manera que es.
El documento listo para llamadas al evento tan pronto como el navegador se haya cargado lo suficiente como para poder manipular la página, por lo que debe hacer su procesamiento DOM en el bloque $(document).ready()
.
Podría probar la vieja forma de comprobar si el documento está "listo" ... Coloque el script justo antes de la etiqueta </ body> de cierre. Creo que tiene el mismo efecto que el evento "listo" de jQuery. En realidad, probablemente sea más rápido hacerlo de esta manera.
En mi experiencia, el error "Objeto esperado" en IE6 aparece debido a un error de sintaxis; vale la pena poner el script en JSlint , si aún no lo has hecho ...
Me encontré con este problema en mi máquina, ya que pude encontrar una solución rápida. Esto es lo que hice:
1.Debugé mi javascript con la sugerencia de nickf "alerta (typeof $)" y obtuve el mensaje de alerta "indefinido"
2.A continuación, califiqué por completo mis recursos de script jQuery.
3. Recargar mi página y recibir el mensaje de alerta de "función"
Por cierto, estoy usando IIS 5.1 en XP. Mi sitio web está configurado para usar "mapeo de comodines" para aprovechar el framework asp.net mvc. Creo que esta configuración causó los enlaces rotos.
Para obtener más información sobre cómo configurar MVC en las versiones anteriores de IIS, consulte la publicación de Phil Haack: http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough. aspx
He tenido este mismo problema en el pasado también. Fue un problema esporádico y fue horrible y se reprodujo.
La solución que encontré fue reemplazar $(document).ready(function() {...});
con jQuery(function() {...})
y funcionó como un hechizo!
Mover $(document).ready(function() {...});
al final no funcionó para mi caso de uso.
Los comentarios en esta publicación son increíblemente útiles (donde primero leí sobre hacerlo de esta manera)
$ (document) .ready () te dice cuándo el dom está listo, pero no todos los activos están necesariamente listos para entrar.
Si quiere asegurarse de que todos los activos están realmente cargados, use $ (window) .load () en su lugar. El uso más común para esto es asegurarse de que las imágenes terminen de cargarse, pero también puede funcionar para su problema de script.
Si está en un elemento de script que está dentro de su elemento de cuerpo, (es decir) ...
La causa pueden ser los atributos que pasa con la etiqueta de secuencia de comandos. Si esto es:
<script type="text/javascript">...</script>
IE6 puede dar un error. Deberías usar
<script language="javascript">...</script>
Entonces el error desaparece.
Solo algunos consejos para cualquiera que esté interesado:
$(document).ready(function() {...});
y $(function() {...});
significa exactamente lo mismo. El último es una forma abreviada de lo primero.
Si se desarrolla para un sitio grande, usa múltiples bibliotecas de Javascript o desarrolla complementos para ser compatible con el trabajo de otras personas, no puede confiar en que el signo de dólar ($) se asocie con el objeto jQuery. Use la siguiente notación para estar seguro:
(function($) { [your code here] })(jQuery);
Esto transfiere jQuery a una función autoejecutable y asocia $ con el objeto jQuery dentro de esta función. Entonces no importa lo que el $ representa fuera de su función.
Para volver a su pregunta, ¿ha verificado si la variable del temporizador está asignada cuando obtiene el error? Creo que el navegador verá $(document).ready(function() {...});
todo como una línea, así que si tienes algún tipo de depurador que te diga que esa es la línea ofensiva, podría ser la variable del temporizador ...
Lo último: en Javascript, no es correcto colocar llaves abiertas en una nueva línea. Esto puede causar errores realmente malos debido a la inserción de punto y coma de Javascripts. Para más información, lea el Javascript de Douglas Crockford: Las partes buenas:
De todos modos, realmente espero no haber molestado a nadie. Espero que resuelvas el problema!
EDITAR: No estoy seguro de si esto es lo que Robertz quiso decir por completo calificado, pero hasta donde yo sé, cuando una URL está completamente calificada significa que no faltan partes, es decir. es una URL absoluta que comienza con http: // o https: // (o algún otro protocolo). ¡Por favor corrígeme si estoy equivocado!
Si alguien tiene el mismo problema, debería ver si cuando llama a sus JavaScript tiene type="application/javascript"
, lo elimino y se corrigió, creo que es un problema con IE y el tipo Thing
Asegúrate de que tu tipo de script sea texto / javascript
<script type=''text/javascript''
El selector de fecha y hora funcionó perfectamente en mi prueba local de XP, pero falló "Objeto esperado" una vez implementado en el servidor. Después de 2 días de ser persistente, así es como resolví mi problema, añadiendo el Url.Content en la ruta del Javascript.
<script src="<%= Url.Content("~/Scripts/jquery-1.4.1.min.js") %>" type="text/javascript"></script>
<script src="<%= Url.Content("~/Scripts/ui/minified/jquery.ui.core.min.js") %>" type="text/javascript"></script>
<script src="<%= Url.Content("~/Scripts/ui/minified/jquery.ui.datepicker.min.js") %>" type="text/javascript"></script>
Tuve el mismo problema, error de script que me informaba que el objeto no estaba definido. Intenté todas las sugerencias enumeradas aquí sin ningún resultado. Lo único que no consideré fue seguridad, había olvidado todo sobre la autenticación de formularios y resulta que olvidé la autorización en la carpeta de scripts que negaba el acceso a las bibliotecas de jQuery.
Espero que esto ayude.