Рекурсивно найти переменную в javascript страницы из расширения Firefox - PullRequest
0 голосов
/ 29 октября 2009

Так что я работаю над расширением Firefox, которое мы будем использовать внутренним (таким образом, не беспокоясь о безопасности), и я хотел бы иметь возможность взаимодействовать с функциями и значениями, определенными в JavaScript веб-страницы , У меня проблемы с надежным поиском определений переменных.

Возьмем, к примеру, gmail, в нем есть список VIEW_DATA, в котором отображаются темы электронной почты и т. Д. К нему можно получить доступ через window.content.frames.wrappedJSObject.VIEW_DATA, но это не всегда работает для меня.

Есть ли разумный способ надежного (возможно рекурсивного) поиска javascript страницы по заданной переменной из расширения firefox?

1 Ответ

1 голос
/ 29 октября 2009

Это то, что вы ищете?

var inspected = [];//prevent infinite loop; top===window

function inspector(obj) {
    inspected.push(obj);
    for(var prop in obj) {
        console.log(prop);
        if(!is_duplicate(obj) && typeof obj[prop] == 'object')
            inspector(obj[prop]);
    }
}

function is_duplicate(obj) {
    for(var i = 0; i < inspected.length; i++) {
        if(inspected[i] === obj)
            return true;
    }
    return false;
}

Эти функции будут проходить через все свойства объекта, проходя весь путь вниз по дереву объектов. Я просто регистрирую свойства, но вы можете сделать что-то более полезное. Попробуйте inspector(window) и наблюдайте, как ваша консоль firebug заполняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...