在我的代码中,我有一行转储当前窗口(恰好是一个 youtube 视频页面):
Firebug.Console.log(myWindow);
可以看出 window 对象包含“yt”属性,这是另一个可以在调试器中轻松检查的对象:
不幸的是,打电话
Firebug.Console.log(myWindow.yt);
记录“未定义”- 为什么会这样,我如何访问这个“yt”属性?
编辑:一个可能很重要的补充:我正在编写的代码是 firefox 扩展的一部分,因此它并不是真正在 pgae 中运行,而是在 chrome 中运行 - 我开始认为这可能是原因.与脚本标签中的代码相反,Chrome 脚本能否以某种方式限制它们可以看到/访问的内容?
最佳答案
出于安全原因,Firefox 扩展不直接访问网页对象,而是通过 wrapper .此包装器允许您使用 DOM 对象定义的所有属性,但页面 JavaScript 添加的任何内容都是不可见的。你可以access the original object :
Firebug.Console.log(XPCNativeWrapper.wrappedJSObject.yt);
但是,如果您想从扩展程序与网页交互,您应该考虑网页无法欺骗您的替代方案(例如,在内容窗口中运行非特权代码:myWindow.location.href = "javascript:..."
).
关于JavaScript 对象在 FireBug 中可见,在代码中不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9961093/