Ionic/Angular在iOS模拟器出现FileReader错误:addEventListener不是函数
解决iOS模拟器中FileReader的addEventListener报错问题
你的问题很典型——在浏览器环境(ionic serve本质是依托现代桌面浏览器运行)里正常的代码,到iOS模拟器的WebView环境就出问题,核心原因是iOS的WebView对FileReader的addEventListener方法存在兼容性缺陷,部分版本的WKWebView/UIWebView并没有完全实现这个标准API。
最直接的修复方案:改用onload事件绑定替代addEventListener
onload是FileReader的原生兼容写法,所有支持File API的环境都能正常识别,把你的代码改成下面这样即可:
createImageFromBlob(image: Blob) { let reader = new FileReader(); // 替换addEventListener为onload回调赋值 reader.onload = () => { this.imageToShow = reader.result; }; if (image) { reader.readAsDataURL(image); }; };
额外排查点(如果上述方案仍未解决问题)
- 确认
image参数是有效Blob对象:iOS环境下,从相机/相册获取的文件可能被处理成非标准Blob类型,可以加个类型校验:if (image && image instanceof Blob) { reader.readAsDataURL(image); } else { console.error('传入的不是有效Blob对象:', image); } - 检查iOS模拟器系统版本:过旧的iOS版本(比如iOS 10及以下)对File API的支持不完善,建议升级到iOS 12+版本测试。
- 确认Ionic WebView插件版本:确保项目使用的是最新版
@ionic-native/ionic-webview,旧版本插件可能存在WebView兼容性bug。
内容的提问来源于stack exchange,提问作者Максим Коровин
相关产品推荐
相关产品推荐

