uni-app uni.onWindowResize(CALLBACK) 在h5上监听ios不触发

uni-app uni.onWindowResize(CALLBACK) 在h5上监听ios不触发

操作步骤:

  • 输入框聚焦

预期结果:

  • 输入框聚焦,监听触发

实际结果:

  • ios微信浏览器输入框聚焦,监听触发

bug描述:

  • ios环境微信浏览器,当输入框聚焦键盘出现时,uni.onWindowResize(CALLBACK)该方法不触发,安卓没有问题
1 回复

更多关于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 浏览器的一些特殊行为或限制导致的。

解决方案

  1. 使用原生 JavaScript 的 resize 事件 如果 uni.onWindowResize 在 iOS 上无法触发,可以尝试直接使用原生 JavaScript 的 window.onresize 事件来监听窗口大小的变化。

    window.onresize = function() {
        console.log('Window resized');
        // 在这里处理窗口大小变化的逻辑
    };
    
  2. 使用 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毫秒检查一次
    
  3. 检查 UniApp 的版本和兼容性 确保你使用的 UniApp 版本是最新的,因为框架的更新可能会修复一些已知的兼容性问题。同时,检查 UniApp 的官方文档和社区,看看是否有关于 iOS H5 环境下 uni.onWindowResize 的相关问题或解决方案。

  4. 使用 orientationchange 事件 如果窗口大小的变化主要是由于设备方向的变化引起的,可以监听 orientationchange 事件。

    window.addEventListener('orientationchange', function() {
        console.log('Orientation changed');
        // 在这里处理设备方向变化的逻辑
    });
回到顶部