You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,提问作者Максим Коровин

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:37:41