如果文件扩展名为 jpg 或 png,如何使用 chrome.downloads.onDeterminingFilename 更改下载的文件名?

2024-01-06

我该如何使用chrome.downloads.onDeterminingFilename https://developer.chrome.com/extensions/downloads#event-onDeterminingFilename如果文件扩展名为 JPG 或 PNG,如何更改下载的文件名?

我正在看这里的例子:

chrome.downloads.onDeterminingFilename.addListener(function(item, __suggest) {
  function suggest(filename, conflictAction) {
    __suggest({filename: filename,
               conflictAction: conflictAction,
               conflict_action: conflictAction});
  }
  var rules = localStorage.rules;
  try {
    rules = JSON.parse(rules);
  } catch (e) {
    localStorage.rules = JSON.stringify([]);
  }
  for (var index = 0; index < rules.length; ++index) {
    var rule = rules[index];
    if (rule.enabled && matches(rule, item)) {
      if (rule.action == 'overwrite') {
        suggest(item.filename, 'overwrite');
      } else if (rule.action == 'prompt') {
        suggest(item.filename, 'prompt');
      } else if (rule.action == 'js') {
        eval(rule.action_js);
      }
      break;
    }
  }
});

这很令人困惑。如何chrome.downloads.onDeterminingFilename https://developer.chrome.com/extensions/downloads#event-onDeterminingFilename从上面检测到文件名?一旦检测到,它是如何更改文件的?谁能解释一下上面这些代码的含义吗?

Ref: http://developer.chrome.com/extensions/samples http://developer.chrome.com/extensions/samples


  • 文件名确定后onDeterminingFilename事件 触发后会调用回调函数,需要 2 参数

    1. item包含下载 id、url、文件名、引用者等数据的对象(请参阅https://developer.chrome.com/extensions/downloads#type-DownloadItem https://developer.chrome.com/extensions/downloads#type-DownloadItem)
    2. __suggest 必须调用它才能同步或异步传递建议。
  • 定义了一个建议函数,它将用于调用__suggest根据具体规则
  • 所有的规则都是从本地内存和一个for循环运行 迭代它们。
  • 对于每次迭代都基于action数据在rule这 调用建议函数时需要指定filename and conflictAction.

基本上文件名是使用item.filename并通过调用建议新文件名__suggest其中键的值filename包含新文件名。

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

如果文件扩展名为 jpg 或 png,如何使用 chrome.downloads.onDeterminingFilename 更改下载的文件名? 的相关文章

  • Jquery文件上传插件进度条

    这个插件 https github com blueimp jQuery File Upload wiki管理网页中的文件上传 并且可以在上传过程中添加很多 UI 元素 您创建一个输入文件类型元素 然后绑定 js 文件 使用实例化代码和 w
  • 共享工作线程在重新加载页面时终止

    为什么 Shared Worker 在重新加载页面时死掉了 应该是复活了我该如何解决这个问题 重新加载前 重新加载后 在 example com 上按 F5 家长工人 var port new SharedWorker app worker
  • JS 在两个或多个点之间画线

    我需要在两个标签或标签之间画一条线 Example http caitriona github io connect the dots http caitriona github io connect the dots 我需要做这样的事情
  • mocha.opts 已弃用,如何迁移到 package.json?

    我正在开发一个大型项目 自从上周我更新了摩卡以来 现在我们收到警告 DeprecationWarning 通过 mocha opts 进行的配置已被弃用并且 将从 Mocha 的未来版本中删除 使用 RC 文件或 改为 package js
  • 弃用警告:时刻构造回退到 js Date

    我正在尝试转换这个日期时间 150423160509 这是 utc 日期时间 改为以下格式 2015 04 24 00 05 09 本地时区 通过使用 moment js var moment require moment timezone
  • 如何针对 IE 进行优化?

    我有一个 JS 密集型应用程序 它在 IE 中运行缓慢 我将花费大约一周的时间来优化 IE 并且我想要一些关于尝试的方向 我发现这个线程引用Drip https ieleak svn sourceforge net svnroot iele
  • 通过 Javascript 更改 Webkit 属性?

    请帮助我 可能是因为我对 CSS 动画和 Javascript 相当陌生 但我使用的代码应该更改它的属性 当我运行代码时 它会执行代码中的所有其他操作 除了更改所需 div 的 CSS 属性 我已经尝试了所有这四种方法 但似乎都不起作用 它
  • TypeError:cli.init 不是 React Native 的函数

    在 MacBook Air M1 芯片中运行 npx react native init appName 时 TypeError cli init is not a function at run opt homebrew lib node
  • “move(-1)”作为 AngularJS 表达式有什么问题吗?

    我收到此错误 parse ueoe Unexpected end of expression move 从这段代码来看
  • 在each() 和forEach() 中使用break 和 continue

    如果我们不能使用 break 和 continue 关键字 我不确定我是否理解函数式循环 映射的价值 我可以做这个 collections users models forEach function item index can t use
  • Google 地图 Javascript v3 折线点击事件

    我正在尝试显示一张地图 其中有多条路线布置为折线 单击多段线时 我想显示特定于该线的数据 将数据与线关联不是问题 但无论单击哪条线 显示的数据都会与最近绘制的线关联 就好像每条新折线都会覆盖最后一条线一样 我有一个数据库 其中包含 gpx
  • Ajax 函数在重定向后不保存滚动位置

    正如标题所述 我编写了一个 ajax 函数 该函数应该滚动到用户在重定向之前所在的位置 我写了一个alert对于测试场景 它确实触发了 但滚动不断回到顶部 我在这里做错了什么 JavaScript ajax type GET url Adm
  • jQuery 模板插件:如何创建双向绑定?

    我开始使用 jQuery 模板插件 微软创建的 但现在我面临这个问题 模板用于绑定到对象数组的一堆表单 当我更改其中一个表单上的某些内容时 我希望更新绑定的对象 但我不知道如何自动执行该操作 这是一个简单的例子 现实生活中的模板和对象要复杂
  • IE9 中的无效字符 DOM 异常

    以下这段 JS 曾经在 IE8 中工作 现在在 IE9 中失败 document createElement 我收到以下异常 SCRIPT5022 DOM 异常 INVALID CHARACTER ERR 5 上面这段代码是不是不符合标准呢
  • 如何获取从 Express (Node.js) 中的表单传递的数据

    我想获取使用表单从页面传递的数据 并在重定向的页面中使用该数据 我的客户端有这个表格
  • Dojo“正在加载”消息

    我是 Dojo 新手 所以我需要一些帮助 我的一些链接需要一段时间 当用户单击时 页面开始加载需要几秒钟 我想添加一条 正在加载 消息 我可以用 旧时尚方式 来做 但我想学习新的 更简单 更智能的 Dojo 方式 具体如何工作现在并不重要
  • javascript从字符串创建不区分大小写的正则表达式

    我试图通过以不区分大小写的方式将输入与正则表达式匹配来进行验证 正则表达式作为对象上的字符串从服务中下来 我可能会得到类似的东西 regex ane 我可以执行以下操作 var rx new RegExp object regex The
  • 如何更改数据表中标题单元格的内容?

    我正在使用数据表 http datatables net plugin 在我的可排序列上 我想用按钮替换列文本 但是这样做 oSettings aoColumns i nTh text 我可以检索相应列的文本 但是 oSettings ao
  • 如何使用 Chart.js 版本 3.2.1 在圆环图中添加文本

    我正在使用 Canvas 在 HTML 中使用 如何使用在圆环图中添加文本 这是我的 javascript 代码和 HTML 代码 我使用了图表js版本3 2 1 所以请给出相同版本 3 的解决方案 var overallStatsCanv
  • 加载谷歌地图控件时是否有事件?

    我知道tilesloaded 但控件似乎在该事件之后加载 我基本上希望能够通过 jQuery 获取控件 但甚至找不到正确的监听 我也刚刚处理了 没有类似的事件 在控件可见之前空闲和tilesloaded触发 因此 基本上将 特殊控制 类添加

随机推荐

  • 在Python中删除文件行

    我正在尝试创建一个接受用户名和高分的程序 如果他们已经是用户 他们会更新到新的高分 或者如果不是 则仅添加高分 我的代码是 try a open data r except FileNotFoundError a open data w a
  • 有没有办法允许用户从网站复制文本,并且文本不格式化?

    几乎只是一个问题 我有一个客户要求在整个网页上使用几乎白色文本的负片设计 但测试人员表示 从网站复制和粘贴很烦人 因为复制到 Word 等内容时 所有内容都显示为白色文本 当用户尝试从网站复制文本时 是否有办法预先删除格式 或者有没有办法劫
  • javax.servlet.http.Cookie 的 getDomain() 返回 null

    如何获取 cookie 的实际域 getDomain getPath 返回 null 我也设置了适当的值 我正在使用response addCookie cookie 提前致谢 问候 普拉尚特 饼干来了in从浏览器可能没有可用的数据 只有
  • Spring Hibernate 模板何时使用以及为什么?

    问候 目前正在开发小型 Web 服务应用程序 其中来自 Web 服务 使用 CXF Spring 的响应被处理并保存到数据库 为了使用数据库 我使用 Hibernate 3 5 在网上浏览一些Hibernate Spring的例子 我经常可
  • 部署 Apache Camel 应用程序时出现警告

    当我将应用程序部署到 GlassFish 时 我看到以下警告 WARN AnnotationTypeConverterLoader Ignoring converter type org apache activemq camel conv
  • valgrind 在使用 libcurl 时检测内存泄漏(无 ssl)

    在我的 C 程序中 我使用 libcurl 的一些基本函数 今天我运行 valgrind 来检查是否存在内存泄漏 并且 valgrind 疯狂地报告了多个错误 我基本上追踪到 CURL curl CURLcode res curl curl
  • 当实体包含 UUID 时,H2 数据库的 Hibernate 数据库模式验证失败

    For a H2数据库架构映射到具有 UUID 的实体 the Hibernate ddl 验证失败与例外 根本原因 org hibernate tool schema spi SchemaManagementException 架构验证
  • HTML5异步文件上传,上传流始终无效

    我正在尝试调试我不久前构建的异步文件上传器 它不再工作 我已经花了很多时间但没有成功 服务器接收的流总是损坏 事实上我保存的文件 图像 无法打开 为了简化调试 我设置了一个全新的 ASP NET 项目 其中包含两个主要文件 带有表单字段的
  • 连接到 Redis 127.0.0.1:6379 时出错 (Errno::ECONNREFUSED) - Wercker

    我正在使用 wercker 来运行我的 Rails 应用程序的规范 我在 wercker 上设置 redis 时遇到问题 在我的 Rails 应用程序中我有redis rb看起来像这样 if Figaro env rediscloud ur
  • ServiceContainer、IoC 和一次性对象

    我有一个问题 我要标记这个问题主观因为这就是我认为它演变成的 更多的讨论 我希望能有一些好的想法或者一些发人深省的想法 我对这个冗长的问题表示歉意 但你需要了解上下文 问题基本上是 您如何处理与 IoC 容器相关的具体类型 具体来说 谁负责
  • 使用测试类编译 jar

    如何在android中编译带有测试类的jar 我正在使用 android gradle 插件 1 3 1 classpath com android tools build gradle 1 3 1 我试过了 task testSource
  • CMake:C 和 CXX 编译器识别未知 Win10 CMakeGUI

    所以我尝试根据 youtube 上的本教程配置一个文件 这非常简单 https www youtube com watch v gYmgbqGfv 8 https www youtube com watch v gYmgbqGfv 8 我在
  • Postgres 从 csv 文件复制 - 没有这样的文件或目录

    我正在尝试将一个 相当大的 txt 文件导入到 PostgreSQL 9 1 中的表 geonames 中 我位于服务器的 目录中 该目录中放置了一个名为 US txt 的文件 我设置了search path变量 geochat 我正在使用
  • git克隆,忽略文件

    我想克隆一个 GitHub 存储库 其中包含一个巨大的 exe 文件 为什么 我对 exe 文件的使用为零 而且它比其他所有文件的总和要大得多 有没有办法在克隆文件时忽略该文件 我的猜测是 如果我要求作者制作一个无可执行文件的分支 我会更幸
  • Python:从父文件夹导入文件

    现在我知道这个问题已经被问过很多次并且我已经查看了其他线程 到目前为止没有任何效果 从使用sys path append 只需导入foo 我有一个 python 文件希望导入一个文件 位于其父目录中 您能帮我弄清楚我的子文件如何成功导入其父
  • ARM 部署:获取 Azure Function API 密钥

    作为流分析部署解决方案的一部分 我想通过例如检索 ARM 模板中的 Azure 函数应用程序的 API 密钥listkeys 函数 有没有办法在 ARM 部署期间分别通过 ARM 模板检索此密钥 如果是 如何检索 Thanks Azure
  • 使用谷歌地图获取附近的地点

    我正在尝试使用谷歌地图来查找我当前位置的附近地点 我在 Google Developer Console 中创建了一个项目并获得了 ios APIkey 和 Server APIkey 我还启用了适用于 iOS 的 Google Place
  • C99/C11 限制类型限定符是否对没有定义的函数意味着什么?

    假设我们有一个函数声明 但我们无权访问其定义 void f int restrict p int restrict q int restrict r 由于我们不知道如何访问指针 因此我们无法知道调用是否会触发未定义的行为 即使我们传递相同的
  • OpenGL顶点缓冲区混淆

    有人愿意解释一下之间的区别吗顶点缓冲区 a 顶点数组 a 顶点缓冲区对象 and a 顶点数组对象 我什至不确定这些是否都是代表不同事物的术语 但我已经看到它们都出现在 OpenGL 规范中 我知道一个顶点缓冲区只包含顶点而没有其他内容 一
  • 如果文件扩展名为 jpg 或 png,如何使用 chrome.downloads.onDeterminingFilename 更改下载的文件名?

    我该如何使用chrome downloads onDeterminingFilename https developer chrome com extensions downloads event onDeterminingFilename