Вызов пользовательских функций из консоли Firebug - PullRequest
4 голосов
/ 20 февраля 2012

Я создал документ, который загружает документ .js, который имеет некоторые функции JQuery, которые я создал.Я хотел бы использовать консоль Firebug, чтобы быстро проверить функциональность этих функций в моем HTML-документе.Но когда я пытаюсь вызвать эти функции в консоли, я не получаю никакого ответа.

например:

  • У меня есть index.html, который вызывает мой JS:

    <script src="jquery.js" type"text/javascript"></script>
    <script src="myfunctions.js" type="text/javascript"></script>
    
  • Myfuntions.jsв нем определено следующее:

    function showAbout(){
      $('div#about').show("slow");
      $('.navbar #about-button').attr('disabled', true); 
    }
    

Проблема:

Когда я пытаюсь вызвать showAbout или showAbout() из консоли на index.html Iне получай никаких изменений.Однако когда я вызываю $('div#about').show("slow"); или $('div#about').show("slow"); напрямую из консоли, я получаю ожидаемое поведение.
Как правильно вызывать пользовательскую функцию из консоли?

Ответы [ 2 ]

22 голосов
/ 20 февраля 2012

Если showAbout определено в глобальной области видимости, вы сможете написать showAbout(); в консоли и увидеть результат. Если нет, то вы, вероятно, помещаете свои функции в функцию определения объема примерно так:

(function() {
    function showAbout() {
    }
})();

Если это так, хорошо для вас , вы избежали создания глобальных переменных / функций. Но это означает, что вы не можете получить доступ к этим функциям из консоли, потому что консоль имеет доступ только к глобальной области видимости.

Если вы хотите экспортировать любой из них, чтобы вы могли использовать его из консоли (возможно, только временно, для отладки), вы можете сделать это следующим образом:

(function() {
    window.showAbout = showAbout;
    function showAbout() {
    }
})();

Это явно помещает свойство showAbout в глобальный объект (window), ссылающийся на вашу функцию. Тогда showAbout(); в консоли будет работать.

2 голосов
/ 20 февраля 2012

Ваш showAbout(), вероятно, не входит в глобальную область.

Может быть обернуто кодом $(document).ready(), и область его действия ограничена этой функцией.

Для тестирования вы можете добавить ниже ...

window.showAbout = showAbout;

Затем вы можете вызвать showAbout() с консоли, как только функция будет определена.

...