2012-02-19 3 views
4

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

, например:

  • У меня есть 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 или с консоли на index.html Я не получаю никаких изменений. Однако, когда я вызываю $('div#about').show("slow"); или $('div#about').show("slow"); с консоли, я получаю ожидаемое поведение.
Каков правильный способ вызова определенной пользователем функции с консоли?

ответ

22

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

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

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

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

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

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

+4

you are f *** ing genious –

+0

Почему в этой скобке завершается функция, за которой следует следующий набор скобок, чтобы сделать эту работу? ** (** функция() {...} **)() **; – Ricalsin

+0

@Ricalsin: Скобки, как таковые, не требуются, но * что-то есть, потому что нам нужно помочь парсеру понять, что он имеет дело с выражением функции *, а не с выражением функции *, потому что вы можете ссылаться выражение функции немедленно, поместив '()' в конец, но вы не можете вызвать функцию * объявление * таким образом. Еще в [этот другой вопрос] (http://stackoverflow.com/q/13341698/157247) и мой ответ на него. :-) –

2

Ваш , вероятно, не находится в глобальном масштабе.

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

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

window.showAbout = showAbout; 

Вы можете позвонить из консоли, после того, как функция определена.