0

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

我研究了如何创建一个拦截页面加载事件的插件......

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

...到目前为止,这很简单。

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

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

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

4

1 回答 1

1

MDC 上的 XUL 学校和 XUL 教程内容将帮助您了解如何使用 XUL 构建用户界面。MDC 代码片段部分的代码示例显示了一些可供附加开发人员使用的 API。

您应该注意的一件事是 Firefox Mobile 是一个多进程应用程序:UI 位于主进程中,而 Web 内容(选项卡)都位于第二个子进程中。这与 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/

于 2011-04-16T20:40:21.303 回答