Javascript Blob()不会在第一次单击中创建文件

马汉

<a href="" 
   ng-click="$ctrl.downLoadFile(file)" 
   ng-attr-id="{{file.id}}">{{file.filename}}</a>

单击上面的<a>标签可file.csv从服务器获取一个success方法内部,我创建了文件。但是问题在于,它没有单击就下载。第一次,我必须单击两次以下载文件。第二次单击后,它将按预期工作。

如何解决这个问题?我希望它也可以与第一次单击一起使用。

这是代码。

    downloadService.getFile(file).then(
        function success(response) {
            var data = response.data,
            filename = file.filename.split("/"),
            name = (filename[filename.length - 1]),
            blob = new Blob([data], {type: 'application/octet-strea'}),
            url = $window.URL || $window.webkitURL,
            fileUrl = url.createObjectURL(blob);
            var anchor = angular.element(document.getElementById(
                         file.id.toString()));
            anchor.attr({
                href: fileUrl,
                target: '_blank',
                download: name
            })
            }
        );

这是<a>我在“欣赏各种解决方案和技巧”中访问标签。提前致谢!

马汉

通过创建新<a>标签解决了此问题

function success(response) {
          var data = response.data,
            blob = new Blob([data], {type: 'application/octet-stream; charset=UTF-8'}),
            url = $window.URL || $window.webkitURL,
            fileUrl = url.createObjectURL(blob);

          var anchor = document.createElement('a');

          anchor.href = fileUrl;
          anchor.target = '_blank';
          anchor.download = name;
          anchor.style = "display: none";

          document.body.appendChild(anchor);
          anchor.click();

          setTimeout(function () {
            document.body.removeChild(anchor);
            $window.URL.revokeObjectURL(fileUrl);
          }, 100);
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JavaScript不会在第一次按键时更新输入值

JavaScript模式只会在第一次打开它之后关闭,而在第二次之后不会关闭

html Javascript提交按钮在第一次单击时不起作用

Javascript、CSS、按钮在第一次点击后不会调用动画函数

Javascript-函数在第一次之后不会以相同的方式运行

谷歌地图infobubble动态内容不会在第一次单击标记时加载

在函数中使 Javascript 文件在本地可用时,第一次不起作用

仅在第一次或刷新时加载Javascript

未加载JavaScript代码(仅第一次)

Javascript减少陷阱-跳过第一次迭代?

Javascript变量第一次未正确设置

Javascript / css过渡仅在第一次工作

javascript没有看到第一次点击?

Javascript“ for”循环未在第一次完全执行

我的 javascript 单击事件在第二次单击时运行,但在第一次单击时不运行

Twitter引导程序:Popovers不会在第一次单击时显示,而在第二次单击时显示

单击按钮不会在第一次单击时更新this.setState;第二次点击更新

简单反应状态不会在第一次请求时改变

jQuery onmouseover函数不会在第一次悬停时触发

setInterval不会在第一次运行时触发tigger内部脚本

反应useCallback不会在第一次更改时更新状态onChange

Grep过滤器不会在第一次比赛时停止

useState 不会在第一次渲染时初始化获取的数据

积极的前瞻不会在第一次出现时停止

html拖放setDragImage不会在第一次拖动时设置重影

按键时不会在第一次按键时触发

RouterLink不会在第一次加载时从父页面模板添加href

Blazor 元素不会在第一次加载时更新

选项值树不会在第一次选择时重置