Javascript canvas.toBlob()仍然无法处理chromium…解决方案?

Javascript canvas.toBlob()仍然无法处理chromium…解决方案?,javascript,html,canvas,chromium,Javascript,Html,Canvas,Chromium,我正在应用程序上使用canvas.toBlob()函数。在firefox上运行良好 使用铬时,该功能失效 我发现了这个问题: 解决这个问题并要求浏览器支持这个功能,但它已经过时了 今天情况如何?chromium是唯一的浏览器还是其他浏览器仍然不支持它 但最重要的是…有什么变通方法我可以使用吗???我的客户端正在使用chromium测试应用程序…嗯,toBlob()仍然受到支持。Chromium上的原始受让人似乎不活跃,而且该问题目前似乎没有被重新分配(见帖子中的) 解决方法是使用聚填充/垫片,

我正在应用程序上使用canvas.toBlob()函数。在firefox上运行良好

使用铬时,该功能失效

我发现了这个问题:

解决这个问题并要求浏览器支持这个功能,但它已经过时了

今天情况如何?chromium是唯一的浏览器还是其他浏览器仍然不支持它

但最重要的是…有什么变通方法我可以使用吗???我的客户端正在使用chromium测试应用程序…

嗯,
toBlob()
仍然受到支持。Chromium上的原始受让人似乎不活跃,而且该问题目前似乎没有被重新分配(见帖子中的)

解决方法是使用聚填充/垫片,如

上述同一链接中的代码列出了该代码(参考条目#57,由Adria编写):

if(!htmlcanvaseelement.prototype.toBlob){
Object.defineProperty(htmlcanvaseElement.prototype,'toBlob',{
值:函数(回调、类型、质量){
const bin=atob(this.toDataURL(type,quality).split(',')[1]),
len=箱长,
len32=len>>2,
a8=新的UINT8阵列(len),
a32=新的UINT32阵列(a8.1缓冲区,0,len32);
对于(变量i=0,j=0;ibin.charCodeAt(j++)实际上,我最终使用了您提供的链接中引用的脚本。工作非常完美。谢谢!我可以保证这段代码的质量,因为我自己编写了它。
if( !HTMLCanvasElement.prototype.toBlob ) {
    Object.defineProperty( HTMLCanvasElement.prototype, 'toBlob', { 
        value: function( callback, type, quality ) {
            const bin = atob( this.toDataURL( type, quality ).split(',')[1] ),
                  len = bin.length,
                  len32 = len >> 2,
                  a8 = new Uint8Array( len ),
                  a32 = new Uint32Array( a8.buffer, 0, len32 );

            for( var i=0, j=0; i < len32; i++ ) {
                a32[i] = bin.charCodeAt(j++)  |
                    bin.charCodeAt(j++) << 8  |
                    bin.charCodeAt(j++) << 16 |
                    bin.charCodeAt(j++) << 24;
            }

            let tailLength = len & 3;

            while( tailLength-- ) {
                a8[ j ] = bin.charCodeAt(j++);
            }

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