uni-app uni.onWindowResize(CALLBACK) 在h5上监听ios不触发
uni-app uni.onWindowResize(CALLBACK) 在h5上监听ios不触发
操作步骤:
- 输入框聚焦
预期结果:
- 输入框聚焦,监听触发
实际结果:
- ios微信浏览器输入框聚焦,监听触发
bug描述:
- ios环境微信浏览器,当输入框聚焦键盘出现时,uni.onWindowResize(CALLBACK)该方法不触发,安卓没有问题
更多关于uni-app uni.onWindowResize(CALLBACK) 在h5上监听ios不触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 UniApp 中,uni.onWindowResize 是用于监听窗口大小变化的 API。然而,在某些情况下,特别是在 iOS 的 H5 环境中,可能会出现 uni.onWindowResize 无法触发的问题。这可能是由于 iOS Safari 浏览器的一些特殊行为或限制导致的。
解决方案
-
使用原生 JavaScript 的
resize事件 如果uni.onWindowResize在 iOS 上无法触发,可以尝试直接使用原生 JavaScript 的window.onresize事件来监听窗口大小的变化。window.onresize = function() { console.log('Window resized'); // 在这里处理窗口大小变化的逻辑 }; -
使用
setInterval轮询检查窗口大小 如果resize事件在某些情况下仍然无法触发,可以考虑使用setInterval定期检查窗口大小,并在窗口大小发生变化时执行相应的操作。let lastWidth = window.innerWidth; let lastHeight = window.innerHeight; setInterval(() => { if (window.innerWidth !== lastWidth || window.innerHeight !== lastHeight) { lastWidth = window.innerWidth; lastHeight = window.innerHeight; console.log('Window resized'); // 在这里处理窗口大小变化的逻辑 } }, 100); // 每100毫秒检查一次 -
检查 UniApp 的版本和兼容性 确保你使用的 UniApp 版本是最新的,因为框架的更新可能会修复一些已知的兼容性问题。同时,检查 UniApp 的官方文档和社区,看看是否有关于 iOS H5 环境下
uni.onWindowResize的相关问题或解决方案。 -
使用
orientationchange事件 如果窗口大小的变化主要是由于设备方向的变化引起的,可以监听orientationchange事件。window.addEventListener('orientationchange', function() { console.log('Orientation changed'); // 在这里处理设备方向变化的逻辑 });

