2009-10-29 52 views
0

因此,我正在研究一个我们将使用的内部(因此不担心安全问题)的Firefox扩展,并且希望能够与函数进行交互以及在网页的JavaScript中定义的值。我无法可靠地找到变量定义。从Firefox的扩展中递归地查找页面的javascript中的变量

以Gmail为例,它有一个包含电子邮件主题等的VIEW_DATA列表来显示。它可以通过window.content.frames.wrappedJSObject.VIEW_DATA访问,但这似乎并不适用于我。

有没有一种合理的方法来可靠地搜索(可能递归)页面的JavaScript从Firefox的扩展给定的变量?

+0

对于那些想知道什么| content.frames |可能意味着,它与| content |相同(和| content.window |),实际上:http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#dom-window – Nickolay 2009-10-29 08:58:12

+0

所以我试过了,VIEW_DATA就在那里,它只是空。我怀疑你会发现它,即使你找到了一种方法来搜索“所有JavaScript”。 //至于发现,我还没有看到任何这样的工具,我怀疑你可以扫描所有JS(包括闭包中的变量),而不用在低级别(调试器API或可能甚至在SpiderMonkey级别上)工作。这只是一个猜测。 – Nickolay 2009-10-29 09:11:39

回答

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

相关问题