【前端】javascript:element.requestFullscreen() 进入全屏后,$(window).height() 获取的是非全屏状态下的高度,而不是全屏高度

当调用 element.requestFullscreen() 进入全屏后,$(window).height() 获取的是非全屏状态下的高度,而不是全屏高度。以下是详细分析:


关键原因:

  1. requestFullscreen() 是异步操作

    • 调用后浏览器需要时间切换全屏,不会立即更新 window 的尺寸。
    • 立即执行 $(window).height() 可能仍返回旧值(非全屏高度)。
  2. 正确获取全屏高度的方式

    • 必须监听 fullscreenchange 事件,在全屏切换完成后获取高度:
    const element = document.documentElement;
    element.requestFullscreen();
    
    // 监听全屏切换完成事件
    document.addEventListener('fullscreenchange', () => {
      if (document.fullscreenElement) {
        const fullscreenHeight = $(window).height(); // ✅ 此时获取的是全屏高度
        console.log("全屏高度:", fullscreenHeight);
      }
    });
    

验证示例:

// 进入全屏
const element = document.documentElement;
element.requestFullscreen();

// 错误:立即获取(可能得到非全屏高度)
console.log("立即获取:", $(window).height()); // ❌ 非全屏高度

// 正确:通过事件监听
document.addEventListener('fullscreenchange', () => {
  if (document.fullscreenElement) {
    console.log("全屏后获取:", $(window).height()); // ✅ 全屏高度
  }
});

补充说明:

  • 全屏高度 ≈ 屏幕高度
    全屏后 $(window).height() 通常等于 screen.height(设备屏幕高度),减去操作系统任务栏/浏览器 UI 的占用(浏览器全屏时会自动隐藏部分 UI)。
  • 同步获取的替代方案
    若需避免事件监听,可用 setTimeout 延迟获取(不推荐,可靠性低):
    element.requestFullscreen();
    setTimeout(() => {
      console.log($(window).height()); // 可能有延迟但能获取全屏高度
    }, 1000); // 延迟时间不确定
    

总结:

场景$(window).height() 返回值
调用后立即获取❌ 非全屏高度(旧值)
fullscreenchange 事件中获取✅ 全屏高度(正确值)

务必通过事件监听确保获取全屏后的最新高度!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜太小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值