1

我正在尝试编写一个 Firefox 扩展程序,通过预加载序列项、预处理它们并根据请求显示来加速浏览页面序列。

有没有办法从特权扩展代码在后台加载和处理任意网页(在当前打开的同一站点上)的 DOM?

理想情况下,文档的 javascript 应该像在普通浏览器窗口中一样工作。我怀疑这需要一个隐藏的窗口。那个 javascript 上的上下文不应该是特权的。加载应该允许用户在所有可见的浏览器窗口中继续正常浏览。

我不喜欢将 iframe 注入当前打开的文档并使它们可选地可见的想法(Webcomic reader userscript使用的原理)

4

3 回答 3

2

从附加 SDK 中,该page-worker模块可能接近您的需要:

page-worker 模块提供了一种创建永久、不可见页面并访问其 DOM 的方法。

也就是说,我不知道是否可以将该不可见页面加载到(当前或新)选项卡/窗口中。您也许可以用document.body页面工作者的选项卡替换当前选项卡。可能。如果是合法的。

于 2012-06-30T08:21:23.497 回答
0

您可以使用轻量级浏览器扩展来收集页面上的所有链接 onload 并使用链接标签来预取每个链接的内容,浏览器将在后台加载这些页面:https ://developer.mozilla.org/en/Link_prefetching_FAQ

或者

如果您需要预加载页面并从扩展区域访问其 DOM,您可以使用附加 SDK 中的 Page Worker API:https ://addons.mozilla.org/en-US/developers/docs/sdk /1.0/packages/addon-kit/docs/page-worker.html

于 2012-07-06T17:13:23.907 回答
-1

我相信是这样。假设您的 javascript 已经在运行

var doc = gBrowser.selectedBrowser.contentDocument;

将获取已加载选项卡的文档,然后您可以对其进行处理并按照您的意愿进行处理。在后台执行此操作并保持应用程序响应是另一回事:)

于 2012-06-27T01:41:44.373 回答