2016-04-26 4 views
0

Это первый раз, когда я смотрю на javascript, поэтому, пожалуйста, извините новый вопрос.Javascript: найти код функции

Я пытаюсь прочитать код для определенной функции на интересующем вас веб-сайте. Я ничего не писал для веб-сайта, поэтому не могу прокомментировать общую структуру. Это похоже на обратную инженерию. Там, где она называется (через JS/main.js) выглядит следующим образом:

$(document).ready(function() { 
    $('#search').funcA(); 

Из того, что я понимаю, это говорит из файла/класса или независимо от того, что comesf Rom поиска идентификатора, вызовите funcA. Мои вопросы: как я вижу файл, который вызывается с #search?

+0

'' 'функция. Таким образом, функция '$' вызывается с аргументом '# search'. Существует несколько библиотек javascript, которые используют '$' как функцию, но, учитывая ваш код, я сильно подозреваю, что библиотека 'jQuery'. Google 'jQuery'. Вы можете попробовать прочитать источник, если хотите, но большинство людей просто прочитали документацию для jQuery. Источник довольно сложный. – slebetman

+0

Кроме того, в общем случае у javascript нет понятия для файлового модуля (кроме node.js). Итак, какой файл что-то происходит, зависит больше от того, кто написал функцию или объект. Посмотрите на все файлы, включенные в теги '

0

funcA представляется как метод jQuery; Попробуйте

console.log($.fn.funcA) 
0

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

> $('#search').funcA 

Вы должны увидеть тело funcA. Случайный пример вывода, когда я сделал $ ("# myownid") показывают:

функция funcA (а, б, в) {вар д, е; если (а || а === 0) возвращают . this.animate (у.е. ("шоу", 3), а, б, в); для (вар г = 0, ч = this.length; г ...

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

0

Предложения console.log здесь приятно использовать Function.prototype.toString(и в некоторых браузерах какая-то консольная магия), но вместо этого я бы использовал debugger. У Chrome есть неплохие инструменты для отладки для таких вещей, и debugger statement доставит вас туда с легкостью.

var test = $('#search').funcA; 
debugger; 

Открыть консоль и начать расследование.Когда выполнение кода попадает точка останова, вы увидите, удобные инструменты, как это

enter image description here

правой кнопкой мыши test там также должно дать вам возможность «определение Show функции» которая покажет вам, где функция фактически была определена как исходный код.

И если вы хотите исследовать еще дальше оттуда, вы всегда можете установить аналогичные точки останова right from the Chrome dev console.

+0

У других браузеров, скорее всего, есть похожие инструменты, но у меня больше всего опыт работы с Chrome, поэтому я могу только рекомендовать инструменты для отладки. – noppa

0

Краткая версия: откройте консоль и запустите $ ("# search"), она вернет объект jquery, содержащий dom-узел с идентификатором поиска.

Длинная версия:

$ ("что-то") ли JQuery (ява библиотеки сценариев) для выбора элементов по селектору CSS, возвращающих объект Jquery. https://learn.jquery.com/using-jquery-core/selecting-elements/

$ (документ) .ready (функция() { ли JQuery, когда мой документ (в основном страница) готов для меня гадости с пробегом этой анонимной функции. https://learn.jquery.com/using-jquery-core/document-ready/

$ (» #search '). funcA(); Выбирает набор элементов, в этом случае единственный элемент с идентификатором «поиск», а затем запускает funcA для каждого из них с использованием элемента в качестве области действия. Таким образом, он запускает funcA на элементе с идентификатором «поиск» с поисковым узлом, являющимся значением специальной переменной области видимости (область привязки через ключевое слово «это», может быть довольно сложной).

Итак, в сущности, что вы видите: Когда мой документ готов, найдите элемент поиска и запустите на нем функцию funcA.

Смежные вопросы