IE lance une erreur JavaScript: la valeur de la propriété 'googleMapsQuery' est nulle ou non définie, pas un objet de fonction (fonctionne dans d'autres navigateurs)
J'ai un vrai problème avec JavaScript scope dans IE 9.
Ceci est dans le corps de mon document (Oui, je réalise que script devrait aller dans la tête pour le HTML approprié, mais je ne l'ai jamais eu briser un script avant). Le script est dans le corps parce que je ne veux pas gâcher une page d'en-tête partagée pour un script qui n'est pertinent que pour cette page:
<script type="text/javascript">
function googleMapsQuery(accountNum) {
// function code is here (omitted for brevity)
}
</script>
C'est à l'intérieur d'un td
bloc à l'intérieur d'un tr
bloc à l'intérieur d'un tbody
bloc à l'intérieur d'un table
bloc à l'intérieur d'un form
bloc à l'intérieur de l' body
:
<button id="google-422111" onclick="googleMapsQuery(422111)" type="button">Google This!</button>
j'ai même déplacé le bloc script au-dessus du formulaire juste au cas où l'ordre de la déclaration de la fonction script serait pertinent (ce n'est pas le cas).
le script fonctionne parfaitement dans FireFox et Chrome, mais dans IE 9 (avec ou sans vue de compatibilité), je reçois cette erreur:
SCRIPT5007: la valeur de la propriété 'googleMapsQuery' est nulle ou non définie, pas un objet de fonction
je j'ai étudié JavaScript scope, et je ne vois pas pourquoi IE pense que 'googleMapsQuery' est une propriété, et pourquoi elle n'est pas définie. C'est une fonction, et je l'ai définie!
6 réponses
j'avais un problème similaire avec une propriété étant nulle ou non définie.
cela a fini par être que le mode de document D'IE était en défaut aux normes D'IE7. Cela s'explique par le fait que le mode de compatibilité est automatiquement paramétré pour être utilisé pour tous les sites intranet (Outils>Affichage De Compatibilité>afficher les sites Intranet dans la vue de compatibilité).
j'ai trouvé la réponse, et malgré ce que j'ai rapporté, ce n'était pas spécifique au navigateur. Le bug était dans mon code de fonction, et se serait produit dans n'importe quel navigateur. Il se résume à ceci. J'avais deux lignes dans mon code qui étaient spécifiques à FireFox/FireBug. Ils ont utilisé la console.journal. Dans IE, ils ont jeté une erreur, alors je les ai commentés (ou alors j'ai pensé). J'ai fait un travail merdique en les commentant, et j'ai cassé la bracket dans ma fonction.
code D'origine (avec console.connecter c'):
if (sxti.length <= 50) console.log('sxti=' + sxti);
if (sxph.length <= 50) console.log('sxph=' + sxph);
Code Cassé (mal placée entre crochets à l'intérieur de commentaires):
if (sxti.length <= 50) { //console.log('sxti=' + sxti); }
if (sxph.length <= 50) { //console.log('sxph=' + sxph); }
code Fixe (crochets fixes à l'extérieur des commentaires):
if (sxti.length <= 50) { }//console.log('sxti=' + sxti);
if (sxph.length <= 50) { }//console.log('sxph=' + sxph);
donc, c'était mon propre codage bâclé. La fonction n'était pas vraiment définie, parce qu'une erreur de syntaxe l'empêchait d'être fermée.
Eh bien, vivez et apprenez. ;)
Avez-vous essayé d'ajouter le point-virgule pour onclick="googleMapsQuery(422111);"
. Je n'ai pas assez de votre code pour tester si le point-virgule manquant causerait l'erreur, mais ie est plus difficile sur la syntaxe.
il y a quelques minutes, je faisais face au même problème. J'ai eu le problème qui est après avoir juste placé votre jQuery démarrer l'autre jQuery script. Après tout, il fonctionnera très bien.
donc j'ai eu une situation similaire avec la même erreur. J'ai oublié que j'avais changé le mode de compatibilité sur ma machine dev et que j'avais une console.commande du journal dans mon javascript. J'ai changé le mode de compatibilité de nouveau dans IE, et j'ai enlevé la console.commande du journal. Plus aucun problème.
dans mon cas particulier, j'ai eu une erreur similaire sur un site web utilisé dans mon organisation. Pour résoudre le problème, j'ai dû liist le site web un "site de confiance".
Pour le faire:
- cliquez sur le Outils bouton, puis options Internet.
- Aller sur le Sécurité onglet.
- Cliquez sur sites de confiance puis sur le bouton sites.
- saisissez l'url du site et cliquez sur Ajouter.
je laisse ça ici dans la boîte à distance ça aidera quelqu'un.