javascript - Blob 构造函数 Safari 问题

标签 javascript jquery css jquery-ui safari

我正在使用 JQuery blob 将 JQuery 数组导出为 CSV。 它适用于除 Safari 5.1.7 以外的所有浏览器。 Windows 7 上的 Safari 浏览器。 我知道 Blob 与 Safari 有兼容性问题。 如果有任何解决方法可以实现它,请告诉我。

代码如下:

var usersCSVData = [];
usersCSVData.push('LastName ','FirstName ', 'Login ','City ','State','Location ');  

 var fileName = "UserCSVdata.csv";
 var buffer = usersCSVData.join("\n");
 var blob = new Blob([buffer], {
                    "type": "text/csv;charset=utf8;"
                });


         if (navigator.msSaveBlob) { // IE 10+
                navigator.msSaveBlob(blob, fileName);
            }
         else {
             var link = document.createElement("a");
             if (link.download !== undefined) {

                 var url = URL.createObjectURL(blob);
                 link.setAttribute("href", url);
                 link.setAttribute("download", fileName);
                 link.style = "visibility:hidden";
                 document.body.appendChild(link);
                 link.click();
                 document.body.removeChild(link);
             }
            }

我遇到错误:

"'[object BlobConstructor]' is not a constructor (evaluating 'new Blob([buffer], {

                    "type": "text/csv;charset=utf8;"

                })')"

最佳答案

首先尝试使用 BlobBuilderWebKitBlobBuilder。此外,使用 blob 构造函数/构建器解决了 Android Stock Browser 4.4- 中的一些问题:

//cross browser BlobBuilder constructor
var customBlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MSBlobBuilder || window.MozBlobBuilder;
//result
var blob;
//Data
var buffer = ['LastName ','FirstName ', 'Login ','City ','State','Location '].join("\n");

//Try to use WebKitBlobBuilder first, It also solves some issues for Android Stock Browser
if (window.WebKitBlobBuilder) {
  blob = new WebKitBlobBuilder();
  blob.append(buffer);
  blob = blob.getBlob("text/csv");
} else if (window.Blob) {
  blob = new Blob([buffer], { type : "text/csv" });
} else {
  blob = new customBlobBuilder();
  blob.append(buffer);
  blob = blob.getBlob("text/csv");
}
console.log(blob);

关于javascript - Blob 构造函数 Safari 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27377507/

相关文章:

javascript - ajax 调用后执行 javascript 重定向

jQuery .wrap() 不起作用

css - 验证 -moz-border-radius/-webkit-border-radius

javascript - jQuery 不与 html 文件一起运行

javascript - jquery li位置返回零

html - 在 CSS 中添加背景图片

javascript - Angularjs:如何根据对象的日期字段的子数组对数组进行排序

javascript - Jquery改变html标签

javascript - 多指触摸滑动事件

javascript - 单击一次后禁用 href 并同时添加新元素?