Firefox插件预取链接标签
Firefox add-on prefetching with link tag
我正在尝试创建一个简单的Firefox插件来预取一些网页。我想使用Firefox的link标签来进行预取,因为这似乎是最简单的方法。下面是我的代码:
main.js:
exports.main = function() {
var commentFinder = pageMod.PageMod({
include: "*",
contentScriptFile: data.url("prefetch.js"),
attachTo: ["top"],
onAttach: function(worker) {
worker.port.emit("init");
}
});
}
prefetch.js:
var start = '<link rel="prefetch" href="';
var end = '">'
var links = [];
var aTags = document.body.getElementsByTagName("a")
for(var i=0; i<aTags.length; i++){
var href = aTags[i].getAttribute("href");
if(links.indexOf(href) == -1)
links.push(href);
}
for(var i=0;i<links.length;i++){
console.log(links[i]);
var tag = start + String(links[i]) + end;
document.head.innerHTML = tag + document.head.innerHTML;
}
当我在我请求的页面的HTML中包含链接标签时,它们会被预取,但是当我使用附加组件添加链接标签时,它们不会。我认为问题可能是当Firefox检查链接标签,但我不确定。有什么方法来测试/修复这个?
我查看了代码,似乎只有在解析器仍处于活动状态时才处理<link rel="prefetch">
元素(参见ProcessLink
(hg)的调用图)。因此,当在网站中使用内联脚本时,它可以工作,但不使用常规的page-mod
。
您可以尝试早先附加脚本,即将contentScriptWhen: "start"
添加到页面mod选项中。但是您应该知道,此时DOM中只有document元素,没有其他元素,因此您需要让脚本等待其他节点……
另一种选择是,您可以使用nsIPrefetchService
,而不是创建<link>
元素,通过让您的内容脚本消息传递链接/引用列表到main.js
,然后通过require("chrome")
调用服务。
旁白:从带宽和性能的角度来看,无条件预取所有链接可能不是最好的主意。
另外:不是所有的链接都是可预取的(mailto:
等)。
相关文章:
- D3带标签的箭头链接
- 在新标签上打开链接,IE7-8和safari所有版本都无法使用
- 链接问题:下一个字符包含在<a>TinyMce ui TinyMce中的标签
- 按钮标签,javascript 转换为链接标签
- 需要查找和替换链接标签
- 使用animate将标签链接锚定到不同页面上的ID
- 如何将主题标签链接集成到网页中并基于该哈希标签加载模态
- 我的 h1 标签链接在悬停时会显示一个下划线,我没有添加
- 锚定标签链接向下滚动太远,但仅在移动设备上
- 将标签链接移动到博客的右侧
- 不能左键点击到锚标签链接
- 在
内动态添加span标签链接 - Chrome扩展点击标签链接
- 如何防止散列标签链接滚动页面?
- 引导标签链接不工作
- 当在JS浏览器中输入url时,偏移一个散列标签链接以调整固定的标题
- 防止嵌套标签链接,但更改复选框状态
- 如何做facebook API登录使用锚标签链接使用Javascript功能?给定在<a href="&q
- Jquery标签链接系统(显示用户所在的页面)
- Accordion JS不会从标签链接打开