【问题标题】:What Exactly Is The Benefit Of XMLHttpRequest Upload attribute?XMLHttpRequest 上传属性的好处究竟是什么?
【发布时间】:2012-10-28 23:54:45
【问题描述】:

我试图弄清楚 XMLHttpRequest 对象中的上传属性究竟做了什么。在我看来,不管有没有它,xhr 事件监听器的进度都会监视xhr.send(file)

我查看了 W3C 并发现: “上传属性必须返回关联的 XMLHttpRequestUpload 对象。”。

但我不明白这与使用 xhr.upload.addEventListener("progress", progressFunction, false); 有何关系,因为 xhr.addEventListener("progress", progressFunction, false); 会做同样的事情。

我问是因为我希望为上传进度创建自定义图形......我打算使用 HTML5 进度元素或 jquery。客户端严格使用 Javascript。

【问题讨论】:

  • 根据MDN,“在XMLHttpRequest 对象本身上触发下载事件(...)在XMLHttpRequest.upload 对象上触发上传事件”。我不确定它们是否完全相同。
  • XMLHttpRequestUpload object != XMLHttpRequest object

标签: javascript upload xmlhttprequest progress addeventlistener


【解决方案1】:

如果您将事件附加到xhr 本身,那么它只会在上传完成后更新"progress"

xhr 对象与明确用于上传的对象之间存在差异。

【讨论】:

  • 哇,奇怪...我认为上传是 XMLHttpRequest 对象的 属性,它们属于同一个对象。
  • 好吧,在 var xhr = new XMLHttpRequest(), upload = xhr.upload; 的情况下,它们不是同一个对象——根据 Chrome,在类型检查下,upload 实际上是一个 XMLHttpRequestUpload 对象。它也没有扩展.open.send 等方法。它是一个订阅本机级别(特定于浏览器)代码的进度并在其事件订阅者(如onprogress|onloadstart|onloadend|onload|onerror|onabort 之类的事件)上调用更新的对象。我认为,就最终用户而言,这几乎就是它的全部工作。但它绕过了重做 XHR API。
  • 我希望获得有关此主题的更多信息,尤其是包含详细信息的参考链接。我在 MDN 上没有看到任何内容。
猜你喜欢
  • 2018-12-26
  • 2014-06-27
  • 1970-01-01
  • 1970-01-01
  • 2014-03-11
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
相关资源
最近更新 更多