移动端UC浏览器不支持Blob的解决方案
2016-12-26 11:59
2586 查看
前言
uc浏览器不支持Blob的解决方案参考文章:http://www.haomou.net/2016/01/14/2016_android_blob/
如果你使用canvas导出图片,并将图片存储在uint8Array中,然后想通过blob构造之后上传到诸如aliyun oss服务器,或者个人文件服务器,那么你要注意了。在chrome早先版本和目前的android中,至少是andrid5.1之前的浏览器,包括微信浏览器等,都不支持blob的构造方法,需要使用BlobBuilder。
原因
var jpeg = new Blob( [array.buffer], {type : "image/jpeg"});
这个blob的构造方法,在ios手机浏览器是支持的,但是在android手机浏览器不行。
桌面版的chrome浏览器解决了这个blob bug, 但是android手机还是有这个问题,会返回一个type error,因为android浏览器不支持这个构造方法。你必须使用老版本的BlobBuilder API.
解决方法
var array = new Int8Array([17, -45.3]); try{ var jpeg = new Blob( [array], {type : "image/jpeg"}); } catch(e){ // TypeError old chrome and FF window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder; if(e.name == 'TypeError' && window.BlobBuilder){ var bb = new BlobBuilder(); bb.append([array.buffer]); var jpeg = bb.getBlob("image/jpeg"); } else if(e.name == "InvalidStateError"){ // InvalidStateError (tested on FF13 WinXP) var jpeg = new Blob( [array.buffer], {type : "image/jpeg"}); } else{ // We're screwed, blob constructor unsupported entirely } }
相关文章推荐
- mysql方言不支持blob类型解决方案
- 在使用Vs2013打开Vs2008的解决方案时出现了以下错误:此版本的应用程序不支持其项目类型(.csproj)
- 移动端页面自适应解决方案 rem布局
- jsp中使用URL重写跟踪Session,浏览器不支持Cookie的解决方案
- Ubuntu 17.04系统中QT5.9.2支持fcitx输入法的解决方案
- 移动端适配两种常用解决方案
- Chrome不支持showModalDialog的解决方案
- 移动端页面常见问题及解决方案
- “无法升级数据库....因为此版本的 SQL Server 不支持该数据库的非发布版本(539) “解决方案
- 融云IM接收系统消息出现,会话页面显示”此版本暂不支持该类型消息“的解决方案
- 关于魅族/小米等手机不支持弹窗解决方案
- 转载001---create-react-app 脚手架不支持less解决方案
- ie8以下版本(包括ie8)的浏览器不支持html5标签属性解决方案(Modernizr 2.6.2插件的使用)
- php 不支持 curl 的终极解决方案
- 数据库不支持中文解决方案(mysql)
- PC 端与移动端的判断(判断是否支持touch事件)
- 微信公众平台开发教程第23篇-SAE不支持XStream框架的解决方案
- 移动端开发zepto.js 不支持低版本ie浏览器
- 支持移动端和PC端的轻量级轮播图插件&&hammer.js教程
- 移动端开发通用坑以解决方案