代码之家  ›  专栏  ›  技术社区  ›  gct

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

  •  0
  • gct  · 技术社区  · 15 年前

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

    以Gmail为例,它有一个可显示电子邮件主题等的视图数据列表。它可以通过window.content.frames.wrappedjsObject.view_数据访问,但这似乎并不总是适用于我。

    有没有一种合理的方法可以从火狐扩展可靠地搜索(可能是递归地)页面的javascript中的给定变量?

    1 回复  |  直到 15 年前
        1
  •  1
  •   geowa4    15 年前

    这就是你要找的吗?

    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) 看着你的萤火虫控制台被填满。