a标签下载,自定义附件名称失效问题处理

#开发的过程中,后端返回一个下载地址,会出现自定义a.download = fileName;失效或者说不是想要的名称# 参考网上一些做法和自己实践,并做了大量验证,最终问题解决。希望对大家有帮助(点赞&收藏&转发)

代码如下:

const createAndClickLink = (downloadUrl, fileName) => {
    return new Promise((resolve, reject) => {
      const xhr = new window.XMLHttpRequest();
      xhr.open("GET", downloadUrl, true);
      xhr.responseType = "blob";

      xhr.onload = () => {
        const url = window.URL.createObjectURL(xhr.response);
        const a = document.createElement("a");
        a.href = url;
        a.download = fileName;
        // 使用 setTimeout 延迟点击操作
        setTimeout(() => {
          a.click();
          window.URL.revokeObjectURL(url); // 释放资源
          resolve(); // 解决 Promise
        }, 0);
      };

      xhr.onerror = () => {
        reject(new Error("文件下载失败"));
      };

      xhr.send();
    });
  };

//直接调用createAndClickLink(downloadUrl,fileName)

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue自定义样式opacity失效可能有多种原因。以下是几种可能的解决方法: 1. CSS中的opacity属性会影响元素及其子元素的透明度。如果您想要设置一个元素的透明度而不影响其子元素,您可以尝试使用background-color的rgba值来设置透明度。例如,将`background-color: rgba(255, 255, 255, 0.5)`应用于元素,其中最后一个参数0.5表示50%的透明度。 2. 检查是否有其他CSS属性覆盖了opacity属性。如果有其他CSS规则具有更高的优先级并将opacity设置为不同的值,那么它可能会覆盖您尝试设置的值。您可以使用浏览器的开发者工具检查元素的样式规则,并查看是否有其他CSS规则影响了您的opacity属性。 3. 检查Vue组件中是否存在样式作用域问题。在Vue组件中,样式默认是有作用域的,这意味着只能在组件内部应用样式。如果您在组件外部尝试设置opacity属性,它可能不会生效。您可以尝试将样式应用到组件内部的元素上,或者使用全局样式来覆盖组件样式。 4. 检查您的HTML模板中是否有错误或语法问题。如果HTML模板中存在错误或语法问题,可能会导致样式属性无法正确应用。请确保您的模板正确闭合标签,并且没有其他语法错误。 综上所述,如果Vue自定义样式opacity失效,您可以尝试使用background-color的rgba值来设置透明度,检查是否有其他CSS属性覆盖了opacity属性,检查Vue组件中是否存在样式作用域问题,以及检查HTML模板中是否有错误或语法问题。希望这些解决方法能够帮助您解决问题。如果您还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值