web-dev-qa-db-fra.com

Problème jQuery dans Internet Explorer 8

J'essaie de faire fonctionner mes fonctions jQuery sur IE8. Je charge la bibliothèque à partir des serveurs de Google ( http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js ).

La $(function(){}) n'est jamais appelée. Au lieu de cela, je reçois une erreur Object expected. J'ai ouvert le développeur et exécuté typeof $ dans la console, et il s’agit de undefined.

J'ai essayé d'aller sur d'autres sites que je connais utilisent jQuery (jquery.com), et ceux-ci fonctionnent tous, y at-il quelque chose que je pourrais manquer ici?

78
Tim Cosgriff

Ecrivez "var" avant les variables, lorsque vous les définissez. IE8 meurt quand il n'y a pas de "var".

42
asd

Correction:

Vérifiez votre balise d'inclusion de script, utilise-t-elle

type="application/javascript" src="/path/to/jquery" 

changer à

type="text/javascript" src="/path/to/jquery" 
39
Richard

J'avais un problème similaire. Les choses ont fonctionné dans IE6, Firefox et IE8 fonctionnant en mode de compatibilité IE7; mais pas dans IE8 'normal'. Ma solution a été de mettre ce code dans l'en-tête

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 

Pourquoi jQuery ne fonctionne-t-il pas dans IE8?.

38
JeffryHouser

La solution consiste à mettre à niveau vers la dernière version de jQuery. J'ai eu exactement le même problème et mis à niveau à 1.4.2 et tout fonctionne à nouveau correctement dans IE8.

Semble être totalement rétro-compatible avec tous les trucs jQuery 1.3.2 que j'ai faits aussi, donc rien à redire ici!

12
Peter Burlingham

J'ai eu ce problème et essayé les solutions mentionnées ici sans succès.

Finalement, j'ai réalisé que je faisais un lien vers la version du script Google CDN en utilisant un http URL alors que la page incorporant le script était un https page.

Ceci a causé C'EST-À-DIRE de ne pas charger jquery (il indique à l'utilisateur s'il souhaite charger uniquement du contenu sécurisé). Le fait de modifier l'URL de Google CDN pour utiliser le système https a résolu le problème pour moi.

10
sheltond

Certaines personnes qui tombent sur ce post pourraient avoir ce problème avec jQuery et IE8 car elles utilisent> = jQuery v2. Utilisez ce code:

<!--[if lt IE 9]>
    <script src="jquery-1.9.0.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="jquery-2.0.0.js"></script>
<!--<![endif]-->
8
stuartdotnet

jQuery n'est pas en cours de chargement, ce n'est probablement pas spécifique à IE8. Vérifiez le chemin sur votre jQuery include. déclaration. Ou mieux encore, utilisez ce qui suit pour le CDN:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js">
</script>
6
cgp

Si vous utilisez HTTPS sur votre site, vous devrez plutôt charger la bibliothèque jQuery à partir du serveur https de Google. Essayez ceci: https://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js (ou le dernier https://ajax.googleapis.com /ajax/libs/jquery/1.5.1/jquery.min.js )

6
lhoess

Je corrigeais un modèle créé par quelqu'un qui avait oublié d'inclure le doctype.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Si vous ne déclarez pas doctypeIE8 fait des choses étranges en mode Quirks.

5
Hone Watson

L'erreur Object expected est déclenché parce que Jquery n'est pas chargé. Cela est dû à la sécurité du navigateur (généralement IE) qui ne vous permet pas d’exécuter du code source javascript externe. Vous pouvez corriger ce problème en:

  • 1: Modification du niveau de sécurité du navigateur pour permettre l’exécution de code javascript externe. Vous pouvez trouver comment faire ici

OR

  • 2: Copiez-collez le code source de jquery dans votre page Web afin qu’il ne soit pas considéré comme un script externe.

Je préfère la première solution.

4
zelmarou

L'événement onload ne fonctionne pas toujours sur IE7/8 dans <head> ... </head>

Vous pouvez le forcer en ajoutant un script onload à la fin de votre page avant la balise comme ci-dessous.

  <script>
    window.onload();
  </script>
</body>
4
Andy Piddock

Cela a résolu mon problème dans IE8:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>

En cours d’exécution sur localhost, j’ai dû changer le https: // en http: //

Si j'essaie de naviguer sur le lien sécurisé, j'obtiens le message d'avertissement Internet Explorer ne peut pas afficher la page Web.

Essayez toujours de charger vos scripts de texte dans un navigateur d'abord s'il y a des problèmes!

2
lenny

J'ai eu les mêmes problèmes.

Je l'ai résolu en vérifiant que IE8 n'était pas configuré correctement pour atteindre l'URL SRC.

J'ai changé ça, ça marche bien.

2
Cristiano

Peut-être que vous insérez deux scripts, cela devrait être travail.

<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE8.js"></script>  
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js">/script> 
2
Vadim Sluzky

J'ai eu le même problème. La solution consistait à ajouter le lien au fichier JQuery en tant que site de confiance dans IE.

1
Carlos Blanco

Peut-être avez-vous filtrage inPrivate activé?

1
Eduardo Molteni

Je pense que vous avez le même problème que moi:

Message: Permission denied
Line: 13
Char: 27021
Code: 0
URI: http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.3.2.min.js

En raison de la référence interdomaine. Essayez d’héberger jquery.js sur le même domaine.

1
Vanja

La solution dans mon cas était de supprimer tous les caractères spéciaux de l'URL à laquelle vous essayez d'accéder. J'avais un tilde (~) et un symbole de pourcentage dedans, et l'appel $ .get () a échoué en silence.

0
jorisw

D'ACCORD! Je sais que jQuery est en cours de chargement. Je le sais jQuery.textshadow.js est en cours de chargement. Je peux trouver les deux scripts dans les outils de développement.

La partie étrange: ce code fonctionne dans la zone de contenu mais pas dans la bannière. Même avec un fixIE.css. ET ça marche quand je mets le css en ligne. (Cela, bien sûr, dérange FireFox.)

J'ai même mis un IE conditionnel autour du champ de texte dans la bannière sans condition).

Je n'ai trouvé aucune différence et j'ai eu les mêmes erreurs dans les deux jquery-1.4.2.min.js et jquery-1.2.6.min.js. jquery.textshadow.js a été téléchargé à partir du site jQuery en essayant de trouver une solution à ce problème.

Ceci n'est pas posté sur le site

0
Kyle

En bref, c'est à cause du moteur d'analyse IE8.

Devinez pourquoi Microsoft a du mal à travailler avec les nouvelles balises HTML5 (comme "section") aussi? C'est parce que MS a décidé de ne pas utiliser d'analyse XML classique, comme le reste du monde. Oui, c'est vrai - ils ont fait une tonne de propagande sur XML mais à la fin, ils ont eu recours à un moteur d'analyse "stupide", à la recherche de "balises connues" et de problèmes en cas de nouveauté.

Il en va de même pour IE8 et le problème jQuery avec "load", "get" et "post". Encore une fois, Microsoft a décidé de "suivre son propre chemin" avec la version 8. En espérant qu'ils résolvent (d) cela dans IE9, la seule option actuelle est de se replier sur IE7 en analysant <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />.

Oh, bon… quelle surprise que Microsoft nous ait fait publier à nouveau des contenus sur des forums. ;)

0
e-sushi