2014-10-22 2 views
0

Я использую Firebug в Firefox. У меня есть гигантский объект JavaScript, который содержит много других объектов JavaScript, которые, в свою очередь, также содержат объекты. Я хочу найти уникальное значение, которое может быть в любом из этих объектов. Однако поле поиска Firebug работает только в тексте, который отображается внутри панели DOM. Когда в списке объектов JavaScript вы можете щелкнуть знак плюса рядом с ним, чтобы развернуть его. Однако, если объект не расширен, он кажется невидимым для поля поиска.Как выполнить поиск всего объекта JavaScript в Firebug?

Как найти элементы, которые в настоящее время не отображаются в Firebug's DOM панель?

ответ

1

Firebug's DOM panel в настоящее время (Firebug 2.0.4) не поддерживает поиск внутри вложенных объектов. Это давняя проблема и сообщается как issue 1545.

Что вы можете сделать, чтобы обойти это, написать собственную функцию поиска, которая возвращает ожидаемый результат. Простой пример для этого следующий код:

function searchValue(obj, value) { 
    for (var prop in obj) { 
    if (typeof obj[prop] === "object") { 
     var result = searchValue(obj[prop], value); 
     if (result !== '') 
     return prop + "." + result; 
    } 

    if (obj[prop] === value) 
     return prop + "." + obj[prop]; 
    } 

    return ''; 
} 

Эта функция делает простой поиск через объект и возвращает путь к свойству, который содержит первое вхождение значения. Например. вызывая searchValue(test, "bar") по объекту, определенному как test = {a: "foo", b: {c: {d: "bar"}}}, возвращает "b.c.d". Обратите внимание, что эта функция не обрабатывает рекурсии.

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