我试图在Firefox脚本中使用类似于document.forms的东西,但它不起作用。
所以,我需要在Firefox-addon脚本中操作DOM对象,比如表单、输入.等等,如果不使用SDK,我如何做到这一点?
发布于 2014-07-08 12:18:34
发布于 2014-07-08 12:20:48
document.forms将无法工作,因为document不是您所认为的那样:它是顶级浏览器(Firefox)窗口,而不是选项卡中的内容。
Firefox浏览器窗口可以有多个选项卡,其中一个是活动选项卡。active选项卡元素 (它是包含实际内容文档的XUL元素)也具有content,例如,content.document.forms将是active选项卡中表单的集合。所以你得在这里调整你的心理模型
window和document指的是网站
至
window和document指的是可能包含许多不同网站的顶级浏览器窗口。
顶层窗口更像是一个包含多个框架(实际网站)的文档,但是使用不同的API来访问它们。
因此,例如,当用户按下某个附加工具栏按钮后执行某些操作时,只需使用content.document.forms获取当前活动选项卡的表单就足够了。
但是使用content.通常是不够的:当用户导航时,外接程序会监听选项卡中的页面加载,方法是向元素 (gBrowser)添加适当的事件侦听器,后者是包含所有选项卡的元素。MDN有一些代码片段为这个和很多其他的东西。
其他加载项将项添加到内容上下文菜单(contentAreaContextMenu)和事件中,以了解哪个DOM节点(以及当前关注的是什么.ownerDocument和Contentwindow == .ownerDocument.defaultView)。
有一件重要的事情要记住:你的加载项代码以完全的权限运行,而网站当然没有。因此,请注意不要编写不安全的代码。所有形式的无约束eval都是邪恶的。
https://stackoverflow.com/questions/24626156
复制相似问题