【问题标题】:Can't get html5 download to work programmatically in Firefox(Works on Safari, IE, Opera, Chrome)无法在 Firefox 中以编程方式下载 html5 下载(适用于 Safari、IE、Opera、Chrome)
【发布时间】:2019-01-15 07:00:54
【问题描述】:
    onDownload: function() {
        var element = document.createElement("a");
        element.setAttribute("href", "/metadata/rest/swagger?namespace=" + this.namespace);
        element.click();
    },

为按钮添加下载功能。但它在 Firefox 中不起作用。(适用于 Safari、IE、Opera、Chrome)

按照以下方式更改代码后:

在html页面中创建锚(),使其隐藏并在之前给出一个id。通过 id 获取元素。设置href属性

onDownload: function() {
        var element = document.getElementById("download");
        element.setAttribute("href", "/metadata/rest/swagger?namespace=" + this.namespace);
        element.click();
},

它适用于所有提到的浏览器。为什么?

【问题讨论】:

  • 很可能 Firefox 只是拒绝在一个甚至不属于 DOM 的元素上执行 click 方法……所以在之前尝试将其插入到 DOM 中。

标签: javascript html browser cross-browser download


【解决方案1】:

我可以在docs看到:

createElement

不符合 XUL 和 XHTML 文档的 DOM 规范:localName 和 namespaceURI 在创建的元素上未设置为 null。

不过,我并不完全相信,您可以改用 createElementNS

var element = document.createElementNS(this.namespace, 'a');

这篇文章可能没有完全回答,但我希望你能得到一些帮助。如果您发现它对解决方案有用,请尝试提供帮助。

【讨论】:

    【解决方案2】:

    您可以使用 HTML5 download 属性。

    <a href="/path/to/file" download>
    

    您可以使用 javascript 相应地更改 href 值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-26
      相关资源
      最近更新 更多