我是Firefox附加开发的新手,并计划编写一个Firefox Mobile插件,该插件可以优化某些页面内容,使其更适合在移动设备上查看。
我研究过如何创建拦截页面加载事件的附加组件......
https://developer.mozilla.org/en/XUL_School/Intercepting_Page_Loads
......到目前为止,这是非常简单的。
但是,我还想与在普通HTML加载链之外加载/显示的HTML内容进行交互。这就是Google Reader使用AJAX获取的Google阅读器内容。
Firefox是否为通过innerHTML等注入页面的后处理内容提供了任何钩子?此外,作为替代方案,我一直在考虑捕获点击/触摸事件并在每次事件后重新运行处理:当您单击Google阅读器中的文章时,它将打开包含文章内容的新视图。
其他附加组件通常如何做到这一点?
答案 0 :(得分:1)
XUL School和MDC上的XUL Tutorial内容将帮助您了解如何使用XUL构建用户界面。 MDC Code Snippets部分包含代码示例,显示了一些可供附加开发人员使用的API。
您应该注意的一点是,Firefox Mobile是一个多进程应用程序:UI位于主进程中,Web内容(选项卡)都在第二个子进程中。这与Firefox Desktop不同,Firefox Desktop是一个单一的流程应用程序。
我们有一些关于如何构建多进程附加组件的注释[1],我也提供了一些视频教程[2]来帮助。
在Firefox Mobile中与Web内容交互意味着您需要创建在子进程中运行的脚本。该脚本可以直接访问网页的DOM窗口和DOM文档。如果您的加载项具有UI,则将使用消息在两个进程之间进行通信。链接[1]和[2]提供了有关如何进行DOM交互和发送消息的详细信息。
收听后载内容注入非常棘手。除了普通网页使用的那些之外,你没有额外的钩子。您可以使用轮询(使用setInterval检查更改),也可以侦听DOM突变事件(这对性能有害)。
Firefox移动开发者在#mobile频道的Mozilla IRC上进行视频群聊。
[1] https://wiki.mozilla.org/Mobile/Fennec/Extensions/Electrolysis