• JavaScript 实现点击/关闭全屏


    JavaScript 实现点击/关闭全屏

    思路

    • 那么,问题我们知道了。解决问题的思路是怎么样的呢?

    • 我们获取到图片元素的 DOM 节点

    • 我们调用全屏的函数进行全屏展示

    • 浏览器监听点击事件,当图片是全屏的状态,再次点击图片的时候,调用函数退出全屏

    具体实现

    • 假设我们有 html 代码如下:

    • img
    • 现在我们编写下 javascript 代码

    • // 退出全屏
      ngAfterViewInit() {
        const image = document.getElementById('image');
        image.addEventListener('click', (event: any) => {
          if(document.fullscreenElement === image) {
            document.exitFullscreen();
          }
          event.preventDefault();
        })
      }
      ​
      // 全屏查看
      public fullscreenView(): void {
        const image = document.getElementById('image');
        image.requestFullscreen()
      } 
    • 当然,上面的代码并没有考虑相关的兼容性。

    •  
    • requestFullscreenexitFullscreen 方法对现代的浏览器支持还是很可以的,在 PC 端上展示毫无压力。但是,我们还是得对代码进行浏览器兼容写法:

    • 这里我新建了个 utils.ts 的文件:

    • export class Utils {
      ​
        public static gotoFullscreen(dom: any): void {
          if (dom.requestFullscreen) {
            dom.requestFullscreen()
          } else if (dom.mozRequestFullScreen) {
            dom.mozRequestFullScreen()
          } else if (dom.webkitRequestFullscreen) {
            dom.webkitRequestFullscreen()
          } else if (dom.msRequestFullscreen) {
            dom.msRequestFullscreen()
          } else {
            console.error('当前浏览器不支持部分全屏!')
          }
        }
      ​
        public static exitFullscreen(dom: any): void {
          if (dom.exitFullscreen) {
            dom.exitFullscreen()
          } else if (dom.webkitExitFullscreen) {
            dom.webkitExitFullscreen()
          } else if (dom.msExitFullscreen) {
            dom.msExitFullscreen()
          }
        }
      }
    • 上面两个方法都是静态方法,调用方式 类名.静态方法,比如:Utils.gotoFullscreen(dom)

     

  • 相关阅读:
    el-table 懒加载自动展开节点
    vue 3 第三十五章:集成 tailwind Css
    pytorch tensor数据类型转换为python数据
    替代netstat的命令之一【ss】 使用实例
    如何使用 KubeSeal 高效加密和管理 Kubernetes 集群的 Secret
    【FFmpeg】ffmpeg使用drawtext过滤器在视频上叠加文字
    《信息安全技术》学习笔记01
    App的回归测试,有什么高效的测试方法?
    【C++】异常
    医疗系统业务流程
  • 原文地址:https://blog.csdn.net/Andrew_Chenwq/article/details/126568691