码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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()
      } 
    • 当然,上面的代码并没有考虑相关的兼容性。

    •  
    • requestFullscreen 和 exitFullscreen 方法对现代的浏览器支持还是很可以的,在 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)。

     

  • 相关阅读:
    后疫情时代,企业如何解决远程用户、居家办公和异地设备的管理问题?
    前端培训丁鹿学堂之vue3(二):最简单的vue应用
    “数智芯生,云端共创”,利尔达精彩亮相第十八届国际物联网展
    计算机网络例题答案
    互联网商业模式发展之路
    限流器算法实现(JUC原子类使用实践)
    如何实现使用原生的Java API实现代理模式_java培训
    基于Echarts实现可视化数据大屏高速综合管控大数据
    数据挖掘-06
    李沐:用随机梯度下降来优化人生!
  • 原文地址:https://blog.csdn.net/Andrew_Chenwq/article/details/126568691
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号