我正在尝试编写一个Firefox扩展程序,通过预加载序列项,预处理它们并根据请求显示来加快浏览页面序列。
有没有办法在特权扩展代码的后台加载和处理任意网页的DOM(在当前打开的同一网站上)?
理想情况下,文档的javascript应该像普通浏览器窗口一样工作。我怀疑这需要一个隐藏的窗口。那个javascript的上下文不应该是特权。 加载应该允许用户在所有可见的浏览器窗口中继续正常浏览。
我不喜欢将iframe注入当前打开的文档并使其可选的可见性(Webcomic reader userscript使用的原则)
答案 0 :(得分:2)
从附加SDK中,page-worker
模块可能接近您所需的模块:
页面工作者模块提供了一种创建永久不可见的方法 页面并访问其DOM。
那就是说,我不知道是否可以将该不可见页面加载到(当前或新的)选项卡/窗口中。您可能能够替换页面工作者的当前选项卡document.body
。有可能。如果这是合法的。
答案 1 :(得分:0)
您可以使用轻量级浏览器扩展程序收集页面上的所有链接,并使用链接标记为每个链接预取内容,浏览器将在后台加载这些页面:https://developer.mozilla.org/en/Link_prefetching_FAQ
OR
如果您需要预加载页面并可以从扩展区访问其DOM,则可以使用附加SDK中的Page Worker API:https://addons.mozilla.org/en-US/developers/docs/sdk/1.0/packages/addon-kit/docs/page-worker.html
答案 2 :(得分:-1)
我相信。假设您的javascript已在运行
var doc = gBrowser.selectedBrowser.contentDocument;
将获取已加载标签的文档,然后您可以处理它并按照您的需要进行操作。在后台执行并保持应用程序响应是一个不同的故事:)