7
votes

IE Erreur JavaScript "L'objet ne prend pas en charge cette propriété ou cette méthode" dans JQuery

Pour une raison quelconque, je reçois l'erreur JavaScript suivante dans Internet Explorer 8 à la ligne 3156 de jquery.js (version 1.4.3, version non compressée): objet ne prend pas en charge cette propriété ou cette méthode . Aucune erreur ne se produit dans Firefox et Google Chrome.

Ceci est la ligne L'erreur se produit sur: p> xxx pré>

investigation ( console.log (type expr.Leftmatch [Type ])) code>) produit le résultat intéressant suivant: Dans Google Chrome, il fournit p> xxx pré>

Cependant dans Internet Explorer, il s'agit de la sortie: p>

function() {
  var p = this;
  do p = p.previousSibling;
  while (p && p.nodeType != 1);
  return p;
}


6 commentaires

Quelle est la valeur de "type" au point que vous avez imprimé cette entrée "gaucheMatch"?


Quoi? - Est-ce que le message d'erreur n'est pas assez précis pour ya? :-D (c'est presque aussi utile que le message d'erreur "non défini n'est pas une fonction") ;-)


Eh bien, si c'est vrai - que les tables internes de Sizzzle ont des ordures - alors quelque chose s'est trompé horriblement quelque part.


@Pointy: Évidemment, mais pourquoi? Et comment le réparer? Et pourquoi ne se passe-t-il que dans IE?


Eh bien, je ne pense pas avoir jamais vu cela arriver, alors je ne suis pas sûr de ce qui doit être fait. Si vous utilisez IE8, il y a deux modes de compatibilité pour vérifier: "Mode de navigateur" et "Mode de document". Mais cela semble être sûr que vous êtes sûr que tout est correct.


@Pointy: Euh, wow. Je l'ai corrigé. Je posterai ce qui ne va pas dans une minute.


3 Réponses :


8
votes

Comme il s'avère, j'ai réussi à comprendre moi-même après plusieurs heures douloureuses. Il apparaît que le moteur SIZZLE SELector se casse sous cette manière inattendue (et uniquement dans Internet Explorer), si vous avez défini objet.pototype.previousObject ailleurs.

Suppression de cette déclaration ou renommer PrécédentObject à quelque chose d'autre corrige le problème.

La chose drôle est, je mets même ce code là-bas moi-même (l'objet .pototype.previousObject = [la fonction dans ma question] ), mais je n'ai pas reconnu le code.

Eh bien, c'est un autre jour plein de potentiel de développement gaspillé.


0 commentaires

3
votes

J'ai découvert que le même comportement se produit si vous essayez d'ajouter une méthode appelée "héritée" à l'objet.Prototype, c'est-à-dire objet.pototype.inherited =

Il affecte IE6, 7 & 8, mais semble être fixé dans IE9 (bêta)


0 commentaires

0
votes

Peut être trop tard pour répondre mais j'avais le même problème et j'ai résolu avec la sélection d'éléments avec un script Java uni plutôt que JQuery! XXX

Cela fonctionne à quel point!


0 commentaires