Savoir si Chrome console est ouverte
Je suis en utilisant ce petit script pour savoir si Firebug est ouvert:
if (window.console && window.console.firebug) {
//is open
};
Et il fonctionne bien. Maintenant, j'étais à la recherche d'une demi-heure pour trouver un moyen de détecter si Google Chrome intégré à web developer console est ouverte, mais je ne pouvais pas trouver tout soupçon.
Ce:
if (window.console && window.console.chrome) {
//is open
};
ne fonctionne pas.
EDIT:
Il semble donc qu'il n'est pas possible de détecter si le Chrome console est ouverte. Mais il y a un "hack" qui travaille, avec quelques inconvénients:
- ne fonctionnera pas lorsque la console est déconnecté de la station
- ne fonctionnera pas lorsque la console est ouverte au chargement de la page
Donc, je vais choisir Unsigneds réponse pour l'instant, mais si some1 vient avec une idée géniale, il est le bienvenu pour continuer à répondre et je change la réponse! Merci!
- double possible de Comment détecter Chrome Inspecter l'Élément est en cours d'exécution ou non?
- La solution dans la réponse semble fonctionner, mais seulement si la console est connecté. Aussi il ne fonctionne pas si la console est déjà ouvert au chargement de la page, tandis que le Pyromane script n'ont pas ce problèmes et semble toujours fonctionner. Mais je peux vivre avec ça pour le moment! Merci beaucoup @pimvdb!! Je vais garder ouverte la question de toute façon pour peut-être trouver une façon similaire à l'Firebug script, qui fonctionne toujours.
- J'ai été essayer des choses comme jeter une erreur et voir si
.message
est récupérée (ce qui arrive lorsque le débogueur est ouvert parce que vous voyez le message), mais malheureusement, cela se produit également lorsque le débogueur n'est pas ouvert. Je voudrais savoir un hack pour cela, si cela existe... - La question est: pourquoi avez-vous besoin de faire cela? Si vous essayez d'empêcher le débogage, il existe d'autres outils de débogage qui peut être utilisé à la place.
- Il n'est pas pertinent pour la question de savoir pourquoi j'en ai besoin et je ne veux pas commencer à expliquer. Je sais, il n'existe aucun moyen pour empêcher some1 de débogage, mais ce n'est pas ce que je suis en train de faire. Je suis juste essayer de trouver un moyen de savoir si la console est ouverte ou non. C'est tout 🙂
- JFYI de la console.profils méthode a été retiré de la console API récemment src.chromium.org/viewvc/blink?view=revision&la révision=151136
Vous devez vous connecter pour publier un commentaire.
fonction toString (2019)
De crédit à Overcl9ck's commentaire sur cette réponse. Remplacement de la regex
/./
avec une fonction vide d'objet fonctionne toujours.regex toString (2017-2018)
Depuis l'origine le demandeur ne semble pas être autour de plus et c'est encore accepté de répondre, l'ajout de cette solution pour la visibilité. Le crédit va à Antonin Hildebrand's commentaire sur zswang's réponse. Cette solution tire parti du fait que
toString()
n'est pas appelée sur les objets connectés, à moins que la console est ouverte.de la console.profils (2013)
Mise à jour:
console.profiles
a été supprimé à partir de Chrome. Cette solution ne fonctionne plus.Grâce à Paul Irish de remarquer cette solution de Découvrez DevTools, à l'aide du générateur de profils:
fenêtre.innerHeight (2011)
Cette autre option peut détecter le quai inspecteur être ouvert, après le chargement de la page, mais ne sera pas en mesure de détecter une détaché de l'inspecteur, ou si l'inspecteur a déjà été ouverte au chargement de la page. Il y a aussi un certain risque de faux positifs.
100
est une valeur inconnue de laactual browser window's height
-the document window's height
commeouterHeight
est à la hauteur de la fenêtre du navigateur. Donc, dans google chrome, cas,100
est l'en-tête de la hauteur.window.resize
(dans le mise code dans cette réponse) lorsque le chargement de la page.function() {}
au lieu d'une regexChrome 65+ (2018)
démo: https://jsbin.com/cecuzeb/edit?output (mise à Jour au 2018-03-16)
package: https://github.com/zswang/jdetects
Lors de l'impression d'un “Élément” outils de développement Chrome va obtenir son id
Une autre version (de commentaires)
Impression régulière variable:
__defineGetter__
est obsolète, donc j'ai changé pourObject.defineProperty(element, 'id', {get:function() {checkStatus='on';}});
...toujours pas de travail.setInterval
J'ai créé devtools-détecter qui détecte lorsque DevTools est ouvert:
Vous pouvez également écouter un évènement:
Il ne fonctionne pas quand DevTools est déconnecté de la station. Cependant, fonctionne avec google Chrome/Safari/Firefox DevTools et Firebug.
J'ai trouvé un moyen de savoir si la Console Chromée est ouvert ou pas.
C'est encore un hack mais c'est plus précis et va travailler météo la console est détaché ou pas.
Principalement à l'exécution de ce code avec la console fermée prend environ 100 microsecondes, et pendant que la console est ouverte, il faut environ deux fois plus de ~200 microsecondes.
(1 milliseconde = 1000 microsecondes)
J'ai écrit plus ici.
Démo est ici.
Mise à jour:
@zswang a trouvé la meilleure solution actuelle - découvrez sa réponse
Si votre objectif est de confiture les outils de développement, essayez ceci (j'en ai trouvé un plus compliqué que la version à un endroit où le code JS a été occulté, c'est très ennuyeux):
J'ai trouvé une nouvelle méthode:
test en ligne
Très Fiable hack
Essentiellement un getter de la propriété et de l'enregistrer à la console. Apparemment, la chose est disponible uniquement lorsque la console est ouverte.
https://jsfiddle.net/gcdfs3oo/44/
Il y a une façon délicate pour vérifier les extensions avec 'onglets' autorisation:
Vous pouvez aussi vérifier si c'est ouvert pour votre page:
J'ai écrit un billet de blog à ce sujet: http://nepjua.org/check-if-browser-console-is-open/
Il peut détecter si elle est ancrée ou non
Les outils de développement Chrome est vraiment juste une partie de WebKit est WebCore de la bibliothèque. Ainsi, cette question s'applique à Safari, Chrome, et tout autre WebCore consommateurs.
Si une solution existe, elle sera basé sur une différence dans les DOM lorsque le WebKit de l'inspecteur web est ouvert et quand il est fermé. Malheureusement, c'est une sorte de poule et de l'œuf problème parce que nous ne pouvons pas utiliser l'inspecteur d'observer les DOM lorsque l'inspecteur est fermé.
Ce que vous pouvez être en mesure de faire est d'écrire un peu de code JavaScript pour faire un dump l'ensemble de l'arborescence DOM. Puis l'exécuter une fois lorsque l'inspecteur est ouvert, et une fois quand l'inspecteur est fermé. Toute différence dans les DOM est probablement un des effets secondaires de l'inspecteur web, et nous pouvons être en mesure de l'utiliser pour tester si l'utilisateur est en train d'inspecter ou pas.
Ce lien est un bon début pour un DOM dumping script , mais vous aurez envie de vider l'ensemble de
DOMWindow
objet, pas seulementdocument
.Mise à jour:
Dirait qu'il ya une façon de le faire maintenant. Découvrez Chrome Inspecteur Détecteur De
Aussi, vous pouvez essayer ceci: https://github.com/sindresorhus/devtools-detect
Si vous êtes développeurs qui font des trucs en cours de développement. Découvrez cette extension Chrome. Il vous aide à détecter lorsque google Chrome Devtoos est ouvert ou fermé.
https://chrome.google.com/webstore/detail/devtools-status-detector/pmbbjdhohceladenbdjjoejcanjijoaa?authuser=1
Cette extension permet de Javascript développeurs de détecter lorsque google Chrome Devtools est ouvert ou fermé sur la page en cours.
Lorsque google Chrome Devtools ferme/s'ouvre, l'extension de soulever un événement nommé "devtoolsStatusChanged" sur la fenêtre.l'élément document.
C'est un exemple de code:
Des réponses ici s'arrête de fonctionner en Chrome de 65 ans. Voici une attaque temporelle alternative ça fonctionne assez fiable dans Chrome, et est beaucoup plus difficile à atténuer que le
toString()
méthode. Malheureusement, il n'est pas fiable dans Firefox.