J'ai un problème où un paramètre jQuery contre une propriété .html() sur un élément sélectionné renvoie l'erreur 'nodeName' est null ou pas un objet. Cela se produit uniquement sur IE6 et IE7, mais pas sur FF2, FF3, Opera (plus tard le 12 novembre 2008) ou Safari (encore une fois, plus tard).IE6 et IE7 ont parfois un bug jQuery Avec 'nodeName' est null ou un objet
Répondre
J'ai résolu le problème. L'exemple ressemble à ceci:
$ ('# section #détail .data') .html (données);
... où les données sont des données HTML renvoyées à partir d'un appel AJAX, et ce bogue ne se produit que sur IE6 et IE7 lors de la deuxième tentative d'appel AJAX, et non le premier. C'est inexplicable. L'erreur renvoyée est:
'nodeName' is null or not an object
Le correctif est simplement effacer la variable avant de régler:
$ ('# section #detail .data') html ('');. $ ('# section #détail .data'). Html (données);
Puis IE6 et IE7 ont recommencé à fonctionner avec. Par ailleurs, j'ai dû installer Visual Web Developer 2008 Express Edition pour faire fonctionner un débogueur dans IE7. Cette information est here.
Je ne sais pas si c'est connecté, mais nous avons eu ce qui ressemble à un problème similaire où le DOM n'a pas les enfants/texte d'un élément que nous connaissons (parce que nous les voyons rendus sur le écran!)
En sélectionnant quelque chose d'autre, puis en sélectionnant à nouveau l'élément semblait résoudre le problème - tout à coup, les enfants apparaissent. Alors que se passe-t-il si vous sélectionnez votre élément, sélectionnez autre chose, sélectionnez à nouveau votre élément?
Merci Paul. Vous m'avez attrapé avant que je puisse poster la réponse. J'avais déjà la question et la réponse dans ma tête avant de poster, mais il m'a fallu une seconde pour poster la réponse. Cependant, ce que vous dites est intéressant parce que c'est en quelque sorte ce que je suis en train de faire. –
Avez-vous une idée du type de nœuds que vous pourriez rencontrer? Ou, courez-vous dans le mode IE de quirks? Il peut y avoir des types de nœuds tels que #text qui n'apparaissent pas correctement dans le DOM en mode quirks.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Je cours XHTML Strict. –
Cela ressemble à un bug dans JQuery. L'exception est levée à la ligne 605 dans 1.5.1:
nodeName: function(elem, name) {
return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
},
La fonction retourne vrai si le nodeName d'objet elem
est identique à la chaîne name
. Sinon, ou s'il n'y a pas nodeName à elem
, nous retournons false. Cependant, elem
n'a pas été testé avant d'être utilisé. Donc, si elem
est null, l'appel de son membre .nodeName
renvoie une exception de pointeur NULL.
Une solution simple est d'inclure elem
au début du court-circuit ET clause:
return elem && elem.nodeName && elem.nodeName.toUpperCase()...
Maintenant, si elem
est nul, la fonction renvoie false au premier test dans la clause et n'essayez jamais d'appeler elem.nodeName
, évitant ainsi le NPE.
Je ne les ai pas vérifié tous (il est utilisé beaucoup), mais dans de nombreux cas où cette fonction est utilisée, elem
est testé avant l'appel de fonction. Mais pas dans tous les cas, apparemment.
Pour moi, ça se passait sur IE quand j'essayais de sélectionner un élément qui n'existait pas. J'essayais d'obtenir son index parmi ses frères et sœurs qui a été retourné comme -1. Puis j'ai essayé de montrer cet élément en l'obtenant par l'index de son parent. Il a résulté dans cette erreur.
Ainsi, je vérifie si l'index n'est pas égal à -1. Cela a résolu le problème pour moi.
Moi aussi, j'ai juste essayé d'obtenir un ID qui n'existait pas dans le document et j'ai eu cette erreur –
- 1. ASP.NET AJAX Erreur - null est null ou un objet
- 2. tagName est null ou un objet - erreur msg dans IE7 en utilisant la dernière version de jQuery (1.2.6)
- 3. Jquery Obtenir largeur ne fonctionne pas dans IE6 ou IE7
- 4. Erreur CascadingDropDown - 'options' est null ou un objet
- 5. IE6 et IE7 XHTML contrôles de formulaire d'entrée strictes ont un rembourrage massif
- 6. Silverlight 2.0 avec bug de compression IE6 +
- 7. jquery sélecteur étrangeté - est-ce un bug ou est-ce que je le fais mal?
- 8. Jquery IE6 IE7 afficher et masquer les bogues
- 9. Bizarre IE7 Bug/Erreur
- 10. simile exposition bug IE7
- 11. comparer un objet à null!
- 12. Bizzarre bug dans IE7 (surprise)
- 13. IE6 flotteur sidepanel bug
- 14. IE6 bug. La taille de la div augmente quand un: hover est déclenché
- 15. CONDITION CSS différencier entre IE6 et IE7
- 16. ASP.Net UpdatePanel ImageButton provoque "this._postbackSettings.async est null ou un objet"
- 17. Compatibilité du navigateur entre IE6 et IE7
- 18. IE7 CSS Scrolling Div Bug
- 19. impossible IE7 Z-Index, bug d'élément imbriqué!
- 20. Javascript: est nul ou pas un objet
- 21. Problème fonctionnant AJAX correctement sur IE6 et IE7
- 22. NHibernate - objet enfant est null
- 23. Problème de Jquery/Pikachoose rechargement continuel ie7/ie6
- 24. Est-ce un bug avec l'accès au tableau PHP?
- 25. Est-ce un bug CSS?
- 26. Div Alignement FireFox, IE7, IE6
- 27. erreur jquery dans IE6
- 28. jQuery $ ("# field") est null?
- 29. Service Web renvoyant un objet avec des champs null
- 30. IFrame Image d'arrière-plan n'apparaît pas dans IE6 et IE7
il n'est pas nécessaire de faire un sélecteur avec deux ID. C'est plus lent que d'aller directement à la source – redsquare