console.log() pas pour la sortie HTML de jQuery sélection d'objet
J'ai eu un problème lors de l'utilisation de console.log
dans Google Chrome. Soudain, lorsque j'étais sortie d'un élément comme $(this)
il était d'affichage comme:
[<div>, context: <div>]
ou
[jQuery.fn.jQuery.init[1]]
dans la console. ( Les deux viennent de la même ligne: console.log($(this))
)
Ce problème s'est posé hier à partir de nulle part. Il n'y a pas un problème avec le code. Je me suis connecté exactement la même chose sur un autre ordinateur et il est affiché comme:
[<div class='element'></div>, ...]
Mise à jour: la nouvelle version de Chrome changements de la sortie de console.log()
Personne ne sait comment je peux revenir aux paramètres d'origine de Google Chrome console?
- Je vous recommande d'améliorer votre acceppt taux et de considérer que, même si il n'y a pas de réponse parfaite à chaque utilisateur qui ont donné une réponse est d'essayer d'aider et a mis du temps et des efforts dans leur réponse avec le seul avantage de l'obtention de points pour un upvote ou accepté de répondre.
- Veuillez étoiles code.google.com/p/chromium/issues/detail?id=162570
Vous devez vous connecter pour publier un commentaire.
Pour répondre à la question:
Il n'y a pas de réglage pour l'ancienne sortie de la console.log(). Vous pouvez soit:
console.log()
en ajoutant votre proprefunction log()
Chrome 23/24: Sortie de la console.log() a changé parfois
Selon user916276 la sortie de la console.log(jQuery-Objet) a changé:
Utilisateur brentonstrine m'a fait prendre conscience du fait que mon contexte.outerHTML ne fonctionne pas toujours.
J'ai mis à jour mon code avec un nouvel exemple. Il semble que l'existence de
jqObject.context.outerHTML
dépend de la façon dont vous passez le jQuery-Objet à la fonction.Je l'ai testé avec chrome dev channel (25.0.1323.1) et deux de chrome en fonction des versions (21, 22).
Pour éviter les malentendus. Cette réponse est sur le changement de comportement de la rédaction d'un objet jQuery pour la inbuild console de la récente de google chrome navigateurs (version 24, 25).
Code source de Chrome
J'ai pris un coup d'oeil dans le code source de chrome changements à l'Console.cpp et dans le l'affichage de la timeline pour trouver des renseignements sur les changements dans la WebInspector. Je ne pouvais pas trouver le montant exact qui est responsable pour le changement de comportement de
console.log()
. Je suppose que cela a à voir avec les changements de ConsoleView.js, Deux, Trois. Si quelqu'un souhaite lancer queconsole.log()
renvoie le même résultat que dans google Chrome, 21, 22, il pourrait soumettre un rapport de bogue. Cette deux bugs pourrait être utilisé comme un modèle pour placer la demande de modification..context.outerHTML
ne fonctionne pas.console.log.apply(console, $(this));
var domLog = function($obj){ console.log.apply(console,$obj); }; domLog( $("div") );
La sortie est correcte que $(this) fait référence à jQuery de sélection de l'objet, pas le sous-jacent objet DOM(s).
Si vous souhaitez à la sortie de la raw de l'élément DOM(s), vous pouvez essayer ce qui suit:
Ou vous pouvez aussi le faire:
[<div class="element"></div>, ...]
😛console.log( $( this ).html() );
vous donne le texte en clair etconsole.log( $( this ).get(0) );
vous donne le code HTML. Mais dans le cas où l'objet a obtenu frères et sœurs: (vous pouvez tester vous-même), si vous ajoutez.attr( 'id' )
, vous aurez rien pour le premier et une erreur pour la, plus tard. L'Erreur estUncaught TypeError: Object [HTML HERE] has no property 'attr'
.Ici est une bien meilleure solution que
console.log.apply(console, obj);
que je viens de découvrir. Découvrezconsole.dirxml(obj);
qui donne presque le même résultat lorsqueobj
est un sélecteur jQuery jeu de résultats. Cependant, seule cette dernière fonctionne quandobj
est un élément spécifique d'un sélecteur jQuery jeu de résultats.Voici une démo que vous pouvez faire sur cette page...
Vous verrez que #4 journaux "undefined".
Donc, à partir de maintenant, je vais utiliser
console.dirxml
parce que c'est simple, efficace et intégré. Avoir à passerconsole
comme premier argument deapply
jamais assis à droite avec moi de toute façon.Par défaut , google chrome maintenant retourne un objet avec tous les détails concernant cet élément lorsque u est une console.log($(element)).
un exemple de ce à quoi il retourne en fait
donc si u ne console.log($('input:first')[0]) u serait ur obtenir le Résultat désiré.
espère que cette aide
[0]
imite l'ancien comportement.[0]
à votre sélecteur jQuery qui va vous donner la vieille sortie, il ne sera pas: $(this)[0] est-ce que seulement vous donner des "vieux de la sortie" correctement si vous ne trouverez qu'un seul élément, si vous trouvez de nombreux éléments différents, vous verrez qu'il n'émet que la première[0] dans le tableau des éléments, et n'est donc pas utile.Mise à jour: Solution plus simple.
Justification de la sortie de la console changement:
Réponse de pfeldman, DevTools développeur:
crbug.com/50316
[].slice.call(x,0)
qui est dans le vôtre, mais pas le mien faire?Mon montage de @brentonstrine la réponse a été rejeté, donc je vais faire une nouvelle réponse pour elle. Mais voir mon autre réponse sur cette page pour un solution encore meilleure.
Cette démo vous montre pourquoi nous nous soucions de la journalisation de cette nouvelle façon par rapport à la normale de la sorte...
domlog($(id))
est utilisée, elle renvoie le domnode dans une manière que vous pouvez la souris dans la console et le nœud correspondant<div id="answer-13594327">...</div>
est highligthed dans son contexte de la page (voir capture d'écran). La fonctionnormallog($(id))
retourne le [nœud] entre parenthèses - souris au-dessus de ne pas mettre en surbrillance le texte placé entre crochets nœud[<div id="answer-13594327">...</div>]
C'est ma solution, pour envelopper la console.journal dans mon propre fonction, il a quelques défauts, comme elle ne vous dit pas le nombre de ligne, le problème s'est produit, mais j'ai fait par outputing significan messages de journal... si quelqu'un veut l'améliorer n'hésitez pas!
Remarque:
underscore.js
est une dépendance, je suis sûr que vous pouvez le faire dans le plus pur JS, mais j'ai toujours compter sur underscore.js 🙂Le message à retenir ici est:
Alors que vous venez de faire:
log($(".some.class"));
et d'obtenir les éléments queold school
DOM objets dans la console.