L'appel de fonctions personnalisées à partir de la console de firebug
J'ai créé un document qui charge un .js document qui a des fonctions JQuery que j'ai créé. Je voudrais utiliser la console de firebug pour tester rapidement la fonctionnalité de ces fonctions sur mon document html. Mais quand j'essaie de l'appeler ces fonctions dans la console, je n'obtiens aucune réponse.
par exemple:
- J'ai index.html que faire appel à mon JS:
<script src="jquery.js" type"text/javascript"></script> <script src="myfunctions.js" type="text/javascript"></script>
- Myfuntions.js les suivants sont définis:
function showAbout(){ $('div#about').show("slow"); $('.navbar #about-button').attr('disabled', true); }
Le Problème:
Quand j'essaie d'appeler showAbout
ou showAbout()
à partir de la console sur index.html je ne reçois pas toutes les modifications. Cependant, quand je l'appelle $('div#about').show("slow");
ou $('div#about').show("slow");
à partir de la console directement-je obtenir le comportement attendu.
Quelle est la bonne façon d'appeler une fonction définie par l'utilisateur à partir de la console?
OriginalL'auteur E.E.33 | 2012-02-19
Vous devez vous connecter pour publier un commentaire.
Si
showAbout
est défini dans la portée globale, vous devriez être en mesure d'écrireshowAbout();
dans la console et voir le résultat. Si pas, alors vous êtes probablement mettre vos fonctions dans une la portée de la fonction comme suit:Si oui, bon pour vous, vous avez évité créé des variables globales/fonctions. Mais cela signifie que vous ne pouvez pas accéder à ces fonctions à partir de la console, parce que la console n'a accès qu'à une portée globale.
Si vous souhaitez exporter un de ces vous pouvez les utiliser à partir de la console (peut-être que temporairement, à des fins de débogage), vous pouvez le faire comme ceci:
Explicitement met un
showAbout
propriété sur l'objet global (window
) le référencement de votre fonction. PuisshowAbout();
dans la console fonctionne.pourquoi est-habillage de la fonction entre parenthèses, suivi par un autre jeu de parenthèses obligatoires pour faire ce travail? ( function(){ ... } )() ;
Les parenthèses, en soi, ne sont pas obligatoires, mais quelque chose est, parce que nous avons besoin de l'aide de l'analyseur de comprendre qu'il ne traite qu'avec une fonction expression plutôt que dans une fonction déclaration, parce que vous pouvez appeler une fonction d'expression immédiatement en mettant
()
à la fin, mais vous ne pouvez pas appeler une fonction déclaration de cette façon. De plus en cette autre question et ma réponse. 🙂OriginalL'auteur T.J. Crowder
Votre
showAbout()
n'est probablement pas dans la portée globale.Il peut être enveloppé par un
$(document).ready()
code, et sa portée est limitée à cette fonction.Pour les tests, vous pouvez ajouter des sous...
Vous pouvez ensuite appeler
showAbout()
à partir de votre console, une fois que la fonction a été définie.OriginalL'auteur alex