从firefox扩展中递归查找页面的javascript中的变量

时间:2009-10-29 00:24:09

标签: javascript firefox

所以我正在开发一个我们将在内部使用的firefox扩展(因此并不担心安全性),我希望能够与网页的javascript中定义的函数和值进行交互。 。我无法可靠地找到变量定义。

以gmail为例,它有一个VIEW_DATA列表,可以显示电子邮件主题等。它可以通过window.content.frames.wrappedJSObject.VIEW_DATA访问,但这似乎并不总是对我有用。

是否有合理的方法可以从firefox扩展中可靠地搜索(可能递归地)页面的javascript到某个给定变量?

1 个答案:

答案 0 :(得分:1)

这是你在找什么?

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控制台是否已被填满。