所以我正在开发一个我们将在内部使用的firefox扩展(因此并不担心安全性),我希望能够与网页的javascript中定义的函数和值进行交互。 。我无法可靠地找到变量定义。
以gmail为例,它有一个VIEW_DATA列表,可以显示电子邮件主题等。它可以通过window.content.frames.wrappedJSObject.VIEW_DATA访问,但这似乎并不总是对我有用。
是否有合理的方法可以从firefox扩展中可靠地搜索(可能递归地)页面的javascript到某个给定变量?
答案 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控制台是否已被填满。