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

标签 javascript google-chrome google-chrome-extension google-chrome-devtools

如何使用 chrome.downloads.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如何从上面检测文件的名称?一旦检测到,它是如何更改文件的?任何人都可以分解上面这些代码的含义吗?

引用:http://developer.chrome.com/extensions/samples

最佳答案

  • 一旦确定文件名 onDeterminingFilename 事件 在调用回调函数时触发,它需要 2 参数

    1. item 对象,包含下载 id、url、文件名、引荐来源网址等数据(请参阅 https://developer.chrome.com/extensions/downloads#type-DownloadItem )
    2. __suggest 必须调用它以同步或异步传递建议。
  • 定义了一个建议函数,用于调用__suggest 根据具体规则
  • 所有规则都从本地内存中访问并运行一个for循环 遍历它们。
  • 对于基于规则中的action数据的每次迭代 使用特定的 filename 调用 suggest 函数,并且 冲突操作

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

关于javascript - 如果文件的扩展名为 jpg 或 png,我如何使用 chrome.downloads.onDeterminingFilename 更改下载的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22736325/

相关文章:

javascript - Node.js将日期字符串转换为Unix时间戳

javascript - 顶级/子级菜单上的隐藏()延迟问题但是当鼠标再次进入时取消隐藏()

qt - 使用 Qt 编写的插件并使其与 NPAPI 一起使用的简单工作示例

javascript - Angular:Chrome 严格模式之外尚不支持 block 作用域声明

google-chrome-extension - 来自 chrome 扩展的 Google Calendar API HTTP 请求

javascript - Chrome 扩展 : Cant appendchild in my popup file

javascript - 倒计时并替换错误答案

javascript - 瘦长 |如何使用 span 标签上的点击事件删除突出显示的文本?

javascript - iOS 版 Chrome 上的箭头功能

javascript - 在 Chrome 应用程序中重用 UDP 套接字的地址