在FireBug中可见的JavaScript对象,代码中无法访问

Kim*_*uss 5 javascript firebug firefox-addon

在我的代码中,我有一行转储当前窗口(恰好是youtube视频页面):

Firebug.Console.log(myWindow);
Run Code Online (Sandbox Code Playgroud)

可以看出window对象包含"yt"属性,这是另一个可以在调试器中轻松检查的对象:

http://i.imgur.com/lHHns.png

很遗憾,打电话

 Firebug.Console.log(myWindow.yt);
Run Code Online (Sandbox Code Playgroud)

记录"undefined" - 为什么会这样,我如何访问这个"yt"属性?

编辑:一个可能很重要的附加:我正在编写的代码是firefox扩展的一部分,所以它并没有真正在一个pgae中运行,但在chrome中 - 我开始认为它可能是原因.与脚本标记中的代码相比,chrome脚本在某种程度上可以限制在他们可以看到/访问的内容中吗?

Wla*_*ant 2

出于安全原因,Firefox 扩展不会直接访问网页对象,而是通过包装器访问。该包装器允许您使用 DOM 对象定义的所有属性,但页面 JavaScript 添加的任何内容都是不可见的。您可以访问原始对象

Firebug.Console.log(XPCNativeWrapper.wrappedJSObject.yt);
Run Code Online (Sandbox Code Playgroud)

但是,如果您想从扩展程序与网页进行交互,您应该考虑网页无法欺骗您的替代方案(例如,在内容窗口中运行非特权代码:)myWindow.location.href = "javascript:..."