js全屏(h5全屏api:requestFullscreen)

前提: iframe嵌套页面
一.判断是否全屏

   /**
     * [isFullscreen 判断浏览器是否全屏]
     * @return [全屏则返回当前调用全屏的元素,不全屏返回false]
     */
    function isFullscreen(){
        let doc = window.top ? window.top.document :document
        return doc.fullscreenElement    ||
               doc.msFullscreenElement  ||
               doc.mozFullScreenElement ||
               doc.webkitFullscreenElement || false;
    }

window.top :返回最顶层的窗口对象
window.top.document : 返回最顶层的窗口对象的document对象

二.设置全屏

    /**
     * [setFullscreen 设置全屏]
     * @param {domElement} el[DOM节点对象(可选)]
     */
    function setFullscreen() {
        let el = window.top ? window.top.document.documentElement : document.documentElement;
        let rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullscreen;
         try {
           if (typeof rfs !== "undefined" && rfs) {
                rfs.call(el);
           }} catch ( e ) {
                  console.log(e);
                }
        return;
    }

三.退出全屏

function exitScreen () {
    let el = window.top ? window.top.document : document;
    if (el.exitFullscreen) {
        el.exitFullscreen();
    }
    else if (el.mozCancelFullScreen) {
        el.mozCancelFullScreen();
    }
    else if (el.webkitCancelFullScreen) {
        el.webkitCancelFullScreen();
    }
    else if (el.msExitFullscreen) {
        el.msExitFullscreen();
    }
};
### UniApp H5 实现全屏方法 #### 使用 `requestFullScreen` 方法实现视频全屏 对于视频元素,在点击时可以通过调用 `requestFullScreen()` 来切换到全屏模式。当用户退出全屏时,可以自动暂停视频播放。 ```javascript // 点击显示全屏 this.videoContext = uni.createVideoContext('popup_video', this); this.videoContext.requestFullScreen(); ``` 为了处理全屏状态的变化,需监听 `fullscreenchange` 事件来判断当前是否处于全屏模式,并据此执行相应逻辑: ```javascript // 退出全屏的时候暂停视频 fullscreenchange(e) { if (!e.detail.fullScreen) { this.videoContext.pause() } } ``` #### 强制屏幕方向调整以适应不同设备 针对移动浏览器环境下的应用,可能还需要考虑如何让应用程序根据用户的交互行为改变屏幕的方向。这通常涉及到使用 Plus API 或者其他插件库来进行更细粒度的操作控制[^3]。 ```javascript export default { mounted() { this.player = this.$refs.player.dp; // 监听播放器全屏事件触发强制横屏 this.player.on('fullscreen', () => { plus.screen.lockOrientation('landscape-primary'); }); // 监听播放器退出全屏事件并触发强制竖屏 this.player.on('fullscreen_cancel', () => { plus.screen.lockOrientation('portrait') }); } }; ``` 以上代码展示了通过监听 DPlayer 播放器实例上的特定事件 (`fullscreen`, `fullscreen_cancel`) 并结合 `plus.screen.lockOrientation()` 函数锁定屏幕方向的方式实现了更加灵活的用户体验优化方案。 需要注意的是,上述部分功能依赖于第三方组件或插件的支持,因此实际项目中应确保已正确安装配置这些资源后再尝试集成相关特性。 #### 总结 综上所述,要在 UniApp 的 H5 页面内实现全屏效果主要涉及两个方面的工作:一是利用原生 HTML5 提供的能力使媒体内容进入全屏展示;二是借助框架本身或其他辅助工具完成对整个视窗乃至物理设备姿态的有效管理。具体实施过程中应当充分考虑到兼容性和性能因素的影响,从而保障最终产品的质量与稳定性[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值