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执行环境的限制有关。建议检查以下方面:
-
延迟初始化:在
app.js
中尝试将plusready
事件监听移至onLaunch
生命周期之后,或使用setTimeout
延迟执行:setTimeout(() => { document.addEventListener("plusready", initPlus); }, 0);
-
原生兼容性:iOS 12.1.4可能对5+ Runtime的某些接口存在兼容性问题。确保使用HBuilderX最新版本编译,并更新基座至最新版本。
-
条件编译处理:针对特定iOS版本添加条件逻辑:
const isIOS12 = /OS 12_.* like Mac/.test(navigator.userAgent); if (!isIOS12) { document.addEventListener("plusready", initPlus); } else { // 使用替代方案初始化 }
-
降级方案:若问题持续,可通过
uni.getSystemInfo
主动检测plus
对象就绪状态,结合setInterval
轮询检测:let plusCheck = setInterval(() => { if (window.plus) { clearInterval(plusCheck); initPlus(); } }, 50);