gpt4 book ai didi

javascript - canvas.toBlob() 在 MSEdge 浏览器中的兼容性

转载 作者:行者123 更新时间:2023-11-30 19:32:00 24 4
gpt4 key购买 nike

我正在使用 canvas.toBlob() 回调方法将图像文件转换为 blob。但是我看到 toBlob 与 Microsoft Edge 浏览器不兼容。

我已尝试检测浏览器,并根据我使用的浏览器 toBlob()。对于 Edge,我们有 canvas.msToBlob(),对于其他浏览器,我们有 canvas.toBlob()。我们有什么通用的方法来创建一个 blob 吗?

 let isEdgeBrowser = 
msie\s|trident\/|edge\//i.test(window.navigator.userAgent);
if (isEdgeBrowser) {
let blob = canvas.msToBlob();
}

if (!isEdgeBrowser) {
canvas.toBlob((blob) => {
this.fileUploadedSize = blob.size;
});
}

最佳答案

根据 this article ,我们可以看到HTMLCanvasElement.toBlob()方法不支持Edge浏览器,如果你想在Edge浏览器中使用这个方法,尝试添加以下polyfill:

if (!HTMLCanvasElement.prototype.toBlob) {
Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {
value: function (callback, type, quality) {
var dataURL = this.toDataURL(type, quality).split(',')[1];
setTimeout(function() {

var binStr = atob( dataURL ),
len = binStr.length,
arr = new Uint8Array(len);

for (var i = 0; i < len; i++ ) {
arr[i] = binStr.charCodeAt(i);
}

callback( new Blob( [arr], {type: type || 'image/png'} ) );

});
}
});
}

关于javascript - canvas.toBlob() 在 MSEdge 浏览器中的兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56336478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com