uni-app在iOS12.1.4系统上,app.js文件中document.addEventListener("plusready", function (){})方法回调被阻塞,导致无法与原生APP交互

uni-app在iOS12.1.4系统上,app.js文件中document.addEventListener(“plusready”, function (){})方法回调被阻塞,导致无法与原生APP交互

其他的iOS版本上运行正常,该回调不会被阻塞

3 回复

什么情况下会导致事件监听回调被阻塞?

更多关于uni-app在iOS12.1.4系统上,app.js文件中document.addEventListener("plusready", function (){})方法回调被阻塞,导致无法与原生APP交互的实战教程也可以访问 https://www.itying.com/category-93-b0.html


新建个工程,是否有此问题?

在iOS 12.1.4系统中,plusready事件回调被阻塞的问题通常与系统版本对JavaScript执行环境的限制有关。建议检查以下方面:

  1. 延迟初始化:在app.js中尝试将plusready事件监听移至onLaunch生命周期之后,或使用setTimeout延迟执行:

    setTimeout(() => {
      document.addEventListener("plusready", initPlus);
    }, 0);
    
  2. 原生兼容性:iOS 12.1.4可能对5+ Runtime的某些接口存在兼容性问题。确保使用HBuilderX最新版本编译,并更新基座至最新版本。

  3. 条件编译处理:针对特定iOS版本添加条件逻辑:

    const isIOS12 = /OS 12_.* like Mac/.test(navigator.userAgent);
    if (!isIOS12) {
      document.addEventListener("plusready", initPlus);
    } else {
      // 使用替代方案初始化
    }
    
  4. 降级方案:若问题持续,可通过uni.getSystemInfo主动检测plus对象就绪状态,结合setInterval轮询检测:

    let plusCheck = setInterval(() => {
      if (window.plus) {
        clearInterval(plusCheck);
        initPlus();
      }
    }, 50);
回到顶部