拦截 Firefox Addon SDK 中的新下载

2023-12-10

我为 Windows 编写了一个简单的下载管理器,我想为 Firefox 创建一个插件,启用后会拦截 Firefox 中的新下载并将它们发送到下载管理器。

我已经这样做了谷歌浏览器 using:

chrome.downloads.onCreated.addListener(function(details) {
    // stop the download
    chrome.downloads.cancel(details.id, null);
}

问题是我怎样才能使用火狐浏览器插件 SDK.

我看到有一种方法可以拦截页面加载以查看内容/标题,这可能会有所帮助,但我不知道请求是否会变成下载。

Firefox 附加 SDK:获取 http 响应标头

我也许可以寻找不是 text/html 的内容类型或检查内容处置标头,但如果我没有正确处理所有情况,这可能会导致问题。

是否无法使用 JS SDK 访问下载管理器,或者无法通过某种方式了解下载何时开始/正在启动和停止?


The http-on-examine-response观察者认为,所讨论的链接问题是错误的方法。它涉及所有请求而不仅仅是下载。

相反,使用Downloads.jsm观察新的下载,然后取消它们,等等。

To load Downloads.jsm在SDK中使用:

const {Cu} = require("chrome");
Cu.import("resource://gre/modules/Downloads.jsm");
Cu.import("resource://gre/modules/Task.jsm");

然后您可以添加您的侦听器。

let view = {
  onDownloadAdded: function(download) { 
    console.log("Added", download);
  },
  onDownloadChanged: function(download) {
    console.log("Changed", download);
  },
  onDownloadRemoved: function(download) {
    console.log("Removed", download);
  }
};

Task.spawn(function() {
  try {
    let list = yield Downloads.getList(Downloads.ALL);
    yield list.addView(view);
  } catch (ex) {
    console.error(ex);
  }
});

链接的 MDN 文档有更多信息和示例。

由于您的附加组件是无需重新启动的 SDK 附加组件,因此您需要使用以下命令再次删除侦听器.removeView卸载时,否则会出现内存泄漏。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

拦截 Firefox Addon SDK 中的新下载 的相关文章

  • 如何从 Javascript 访问 Oracle Apex 变量?

    我正在使用 Oracle APEX 但不确定如何从外部 javascript 文件访问以下变量 该文件可能位于应用程序服务器上或存储在共享组件 gt 静态文件中 APP ID APP PAGE ID APP SESSION 如何从 java
  • 动态加载css的方法

    我很早就知道 您可以使用 addRule 和 insertRule 动态地将样式规则加载到页面中 具体取决于它是 IE 还是兼容标准的浏览器 但我刚刚发现 在 Chrome 上 一种更通用 对我来说 的方法效果很好 创建一个 style 元
  • 欺骗或禁用页面可见性 API

    页面可见性 API https developer mozilla org en US docs Web Guide User experience Using the Page Visibility API开始普遍用于在选项卡未处于焦点时
  • 如何从外部域设置 iframe 内部的样式?

    我有一个网站 其中嵌入了来自 3 个不同域的 3 个 iframe 每个 iframe 都位于单独的页面上 将样式表应用于所有 3 个 iframe 的最佳方法是什么 谢谢你 这可以在某些网站上完成 但由于 同源政策 而并非全部 Twitt
  • 让 GTM 代码在 Web 应用程序上运行

    我们公司的职业 工作网站使用第三方服务 允许用户提交职位发布申请 最初 用户登陆一个与 GTM 完美集成的外部平台 在 CMS 中 您可以轻松地将 GTM 代码添加到标题和正文区域 然而 一旦用户点击职位描述上的 应用 他们就会被重定向到一
  • jQuery 输入焦点不起作用

    我正在尝试在表中创建数据的内联编辑 为此 我将单元格中的文本更改为输入 document ready function td edit on click function this html
  • LitElement 不更新列表中的复选框

    我有一个简单的清单 每个项目都有一个删除按钮 当我选中第一个项目然后删除它时 列表会更新 删除该项目 但会选中下一个项目的复选框 下一项的属性是正确的 这是我的代码 import LitElement html from lit eleme
  • Jquery onclick 更改图像 - 3 个产品支架

    EDIT 我想添加另一个按钮 因此总共有 3 个按钮 而不是 2 个 我怎样才能做到这一点 我尝试添加产品支架 3 但如果我先单击按钮 1 然后单击按钮 3 则两个按钮都具有相同的背景图像 预览 http gyazo com 6698586
  • JavaScript - 如何通过键盘使用 onclick 函数

    我有 HTML 和 JavaScript 代码
  • 在javascript/jQuery中设置Java的数据结构

    有没有办法在javascript中像java一样创建集合数据结构 唯一集合 对于一组字符串 我只使用值为 true 的对象 var obj obj foo true obj bar true if obj foo foo in set 这基
  • HTML 5 视频:使用 javascript 播放多个“剪辑”

    我在 HTML 视频和 JavaScript 方面遇到问题 因此编写了一些简单的代码来演示 有一个视频包含三个 剪辑 全长五秒 显然 在现实世界中 它们要长得多 一个在 25 30 秒 一个在 55 60 秒 最后一个在 85 90 秒 我
  • 如何并排展开和折叠三个div?

    document ready function toggle click function if this data name show sidebar animate width 10 hide map animate width 89
  • 通过修改 html 设置在 Web 表单上上传的默认文件名/目录

    我一直使用这个上传表单 并且每次都使用相同的文件名 我想知道是否有一种方法可以通过更改代码并在本地保存文件来设置表单中的文件名 如果有其他方法可以实现自动化 我也愿意 谢谢 这是来源
  • Google Maps API v3 在地图加载后不会禁用滚轮

    我正在网站上实现谷歌地图 一切都工作得很好 除了地图加载后我似乎无法禁用滚轮 如果我在地图加载之前将选项设置为scrollwheel false 则滚轮将被禁用 但如果我稍后尝试执行此操作 我有一个启用 禁用滚轮的复选框 以下是我在页面加载
  • 删除添加空值的Javascript对象项[重复]

    这个问题在这里已经有答案了 我有一个 JavaScript 对象 finalTitleList Title ffd Iscompleted Id 0 Title fdfmdbk Iscompleted Id 1 Title fdf d Is
  • Highcharts 异步服务器加载多个系列

    我正在尝试按照其示例使用 Highcharts 的延迟加载 http www highcharts com stock demo lazy loading http www highcharts com stock demo lazy lo
  • 如何强制传单更新地图?

    当我将 Leaflet 与 React 一起使用时 我遇到了问题 据我研究 问题是 Leaflet 也想控制 DOM 渲染 现在 国家将使用与后端信息相对应的特定颜色代码 范围为1 gt 100 正确着色 但是 它每分钟更新一次 更新后 国
  • MutationOberserver 回调是否在修改观察到的元素的同一动画帧内触发? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 假设我对使用以下命令创建的框架内的元素进行了更改window requestAnimationFrame并且被修改的元素正在被观察
  • jQuery - 将日期选择器的容器设置为特定的 div

    我在 div 上使用 jQuery UI 日期选择器 div通过移动鼠标隐藏和显示 因为日期选择器存在于末尾标签 不在我的 div 内 当我将鼠标移动到日期选择器时 div 消失 我像这样加载了日期选择器 JavaScript dt1 da
  • 如何在javascript中访问请求查询字符串参数?

    我见过许多利用 RegEx 的解决方案 坦率地说 这似乎有些可笑 因为 javascript 是如此通用 必须有一种更简单的方法来访问请求参数 有人可以给我演示一下吗 我发现了一个有用的方法网的深度 http www dotnetbull

随机推荐