2009-04-14 15 views
9

Recientemente instalé IE 8 y parece que no puedo obtener el evento jquery $ (document) .ready para disparar. ¿Hay alguna consideración especial que me falta? Literalmente, esto es todo lo que tengo en mi html y funciona como se esperaba en Chrome y Firefox:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Page full of awesomeness</title> 
    <script type="text/javascript" src="~/Scripts/jquery-1.3.2.js" /> 
    <script type="text/javascript">   
     $(document).ready(function() { 
      alert("Hello?");   
     }); 
    </script> 
</head> 

<body> 

</body> 

En Internet Explorer, la página se carga sin incidentes. No hay cuadro de alerta y no puedo ver ningún error de javascript reportado. ¿Es algo normal que no sé?

+2

Compruebe el validador w3c y verá – Paco

Respuesta

32

Intenta convertir esto.

<script type="text/javascript" src="~/Scripts/jquery-1.3.2.js" /> 

En este

<script type="text/javascript" src="~/Scripts/jquery-1.3.2.js"></script> 
+3

Correcto. IE falla mucho en las etiquetas de script de cierre automático. ver: http://webbugtrack.blogspot.com/2007/08/bug-153-self-closing-script-tag-issues.html – scunliffe

+4

No es un fracaso si se especifica que funcione de tal manera ... solo porque obtienes Los resultados que lo hacen mal no significa que deba usarlo. – meandmycode

+0

Eso lo hizo totalmente. Gracias. Probablemente nunca hubiera pensado en eso. – MojoFilter

0

Mi conjetura sería esto (lo siento, no tengo IE8 en esta máquina para probar)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Page full of awesomeness</title> 
    <script type="text/javascript" src="~/Scripts/jquery-1.3.2.js"></script> 
    <script type="text/javascript">   
     $(document).ready(function() { 
      alert("Hello?");   
     }); 
    </script> 
</head> 

<body> 

</body> 

También me gustaría sugerir a utilizar /Scripts/jquery-1.3.2.js si se refiere a la raíz de su sitio

+0

No lo haría. Si usa /Script/jquery-1.3.2.js, su sitio no funcionará en una web virtual. – cdmckay

+1

Sí, no hay ninguna razón para eliminar el ~, eliminarlo solo hará que su aplicación sea más frágil. – meandmycode

+0

Bueno, fue solo mi opinión. En el pasado tuve algunos problemas para vincular bibliotecas en sitios con un uso intensivo de "URL humanas", por lo que prefiero vincularlas con "/" (por supuesto, si están bajo la raíz del dominio del sitio) – Alekc

1

Con las normas vigentes de XHTML:

Incluso cuando se especifica src, la etiqueta del script no es una etiqueta vacía, y no se puede escribir <script src=".... />. Si incluye el src, no debe incluir ninguna secuencia de comandos entre las etiquetas de apertura y cierre ya que el manejo del navegador de cualquier secuencia de comandos entre las etiquetas no es confiable.

Básicamente, no cierres la etiqueta. Use </script>.

+0

A partir de las especificaciones XML, estas también notaciones son equivalentes. Eso es un error en IE. – rds

+2

No es un error en IE. Se espera que un documento servido como 'text/html' se trate como XML. XHTML sirve como 'text/html' es un truco y debe seguir las pautas de compatibilidad: http://www.w3.org/TR/xhtml-media-types/#C_1 – Quentin

0

Además de lo que otros han dicho, también falta el </html> al final del documento. Tal vez solo un error de copiar/pegar :)

0

También verifique la compatibilidad de jQuery. Actualmente jQuery 2.x solo es compatible con IE9 o posterior. No IE8

Cuestiones relacionadas