Firefox附加组件和页面HTML内容更改事件(Google Reader)

时间:2011-04-16 16:47:28

标签: html ajax firefox-addon gecko

我是Firefox附加开发的新手,并计划编写一个Firefox Mobile插件,该插件可以优化某些页面内容,使其更适合在移动设备上查看。

我研究过如何创建拦截页面加载事件的附加组件......

https://developer.mozilla.org/en/XUL_School/Intercepting_Page_Loads

......到目前为止,这是非常简单的。

但是,我还想与在普通HTML加载链之外加载/显示的HTML内容进行交互。这就是Google Reader使用AJAX获取的Google阅读器内容。

Firefox是否为通过innerHTML等注入页面的后处理内容提供​​了任何钩子?此外,作为替代方案,我一直在考虑捕获点击/触摸事件并在每次事件后重新运行处理:当您单击Google阅读器中的文章时,它将打开包含文章内容的新视图。

其他附加组件通常如何做到这一点?

1 个答案:

答案 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

[2] http://people.mozilla.com/~mfinkle/tutorials/

相关问题