欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue中對監(jiān)聽esc事件和退出全屏問題的解決方案

 更新時間:2022年08月09日 09:36:19   作者:砥礪前行?前程似錦  
這篇文章主要介紹了vue中對監(jiān)聽esc事件和退出全屏問題的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

對監(jiān)聽esc事件和退出全屏問題的解決

vue 的項目中使用了 h5 的全屏 API,在使用esc鍵退出全屏時,默認調用“ document.exitFullScreen() ” 直接退出,想要做監(jiān)聽并設置業(yè)務,需要監(jiān)聽屏幕size變化來出發(fā)事件

mounted() {
? ??
? ? let that = this
? ? window.addEventListener('resize', function () {
? ? ? ?if (!that.isFullScreen()) {
? ? ? ? ?// 非全屏狀態(tài)
? ? ? ? ?//業(yè)務邏輯
? ? ? ? ? ? ? ??
? ? ? ?}
? ? });
}

下面是全屏的完整代碼

methods: {
  //全屏
    fullele() {
      return (
        document.fullscreenElement ||
        document.webkitFullscreenElement ||
        document.msFullscreenElement ||
        document.mozFullScreenElement ||
        null
      );
    },
 
    //判斷是否全屏
    isFullScreen() {
      return !!(document.webkitIsFullScreen || this.fullele());
    },
    //退出全屏
    exitFullscreen() {
      this.fullScreenFlag = false;
      
      if (document.exitFullScreen) {
        document.exitFullScreen();
      } else if (document.mozCancelFullScreen) {
        document.mozCancelFullScreen();
      } else if (document.webkitExitFullscreen) {
        document.webkitExitFullscreen();
      } else if (document.msExitFullscreen) {
        document.msExitFullscreen();
      }
      
    },
    //全屏
    full(ele) {
      if (ele.requestFullscreen) {
        ele.requestFullscreen();
      } else if (ele.mozRequestFullScreen) {
        ele.mozRequestFullScreen();
      } else if (ele.webkitRequestFullscreen) {
        ele.webkitRequestFullscreen();
      } else if (ele.msRequestFullscreen) {
        ele.msRequestFullscreen();
      }
    },
    //切換是否全屏 全屏按鈕要執(zhí)行的方法
    toggleFullScreen() {
      if (this.isFullScreen()) {
        this.exitFullscreen();
      } else {
        this.fullScreenFlag = true;
        this.full(document.getElementById("dataMointor")); //要設置全屏的元素
        
      }
      
    }
 
}

element+vue全屏與退出全屏(監(jiān)聽ESC改樣式)

一、效果

在這里插入圖片描述

在這里插入圖片描述

esc退出會監(jiān)聽

在這里插入圖片描述

二、代碼

bom.js(工具)

/**
 * 瀏覽器全屏
 * @param {HTMLElement} [el=document] 全屏元素
 */
export function fullScreen(el) {
  el = el || document.documentElement;
  const rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullscreen;
  if (typeof rfs !== 'undefined' && rfs) {
    rfs.call(el);
  }
}
/**
 * 退出全屏
 */
export function exitFullScreen() {
  if (document.exitFullscreen) {
    document.exitFullscreen();
  } else if (document.mozCancelFullScreen) {
    document.mozCancelFullScreen();
  } else if (document.webkitCancelFullScreen) {
    document.webkitCancelFullScreen();
  } else if (document.msExitFullscreen) {
    document.msExitFullscreen();
  }
}
/**
 * 瀏覽器當前是否全屏
 * @return {*|boolean}
 */
export function isFullScreen() {
  return document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen
}

design.js(通用)

function toggle(ele, that, exitFullScreen, fullScreen) {
  if (that.isFullScreen) {
    exitFullScreen()
    that.isFullScreen = false
  } else {
    fullScreen(document.getElementById(ele))
    that.isFullScreen = true
  }
}
export default {
  testVueThis,
  toggle
}

- index.vue(示例)

<template>
<my-panel fit
    id="test"
    :shadow="'never'"
    :border="false"
    title="cs">
  <div id="test">
    <div >
      <span>cs123</span>
      123
      </div>
    <el-tooltip :content="tooltipText">
      <span style="cursor: pointer">
        <i :class="icon"
          style="font-size: x-large"
          @click="toggle"></i>
      </span>
    </el-tooltip>
  </div>
</my-panel>
</template>
<script>
import Design from '@/utils/design'
import { fullScreen, exitFullScreen, isFullScreen } from '$ui/utils/bom'
export default {
  data() {
    return {
      isFullScreen: false
    }
  },
  computed: {
    icon() {
      return this.isFullScreen ? 'el-icon-switch-button' : 'el-icon-full-screen'
    },
    tooltipText() {
      return this.isFullScreen ? '退出全屏' : '全屏'
    }
  },
  created() {
    // 初始化監(jiān)聽器
    this.resizeListener()
  },
  methods: {
    resizeListener() {
      const that = this
      window.addEventListener('resize', function () {
        if (!isFullScreen()) {
          if (!isFullScreen()) {
            that.isFullScreen = false
          }
        }
      })
    },
    toggle() {
      Design.toggle('test', this, exitFullScreen, fullScreen)
    }
  }
}
</script>
<style>
</style>

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • vue?elementui二次封裝el-table帶插槽問題

    vue?elementui二次封裝el-table帶插槽問題

    這篇文章主要介紹了vue?elementui二次封裝el-table帶插槽問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue.js實現只彈一次彈框

    vue.js實現只彈一次彈框

    本篇文章通過代碼實例給大家詳細講述了一個vue的實例,實現只彈一次彈框功能,一起學習分享下。
    2018-01-01
  • vue3+element-plus?Dialog對話框的使用與setup?寫法的用法

    vue3+element-plus?Dialog對話框的使用與setup?寫法的用法

    這篇文章主要介紹了vue3+element-plus?Dialog對話框的使用?與?setup?寫法的使用,本文通過兩種方式結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • vue-cli 使用axios的操作方法及整合axios的多種方法

    vue-cli 使用axios的操作方法及整合axios的多種方法

    這篇文章主要介紹了vue-cli 使用axios的操作方法及整合axios的多種方法,vue-cli整合axios的多種方法,小編一一給大家列出來了,大家根據自身需要選擇,需要的朋友可以參考下
    2018-09-09
  • 詳解vue在項目中使用百度地圖

    詳解vue在項目中使用百度地圖

    這篇文章主要介紹了vue在項目中使用百度地圖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • Element?Plus修改表格行和單元格樣式詳解

    Element?Plus修改表格行和單元格樣式詳解

    在使用Element Plus中的table組件展示數據時,由于需要對表格行內數據的數據進行修改,下面這篇文章主要給大家介紹了關于Element?Plus修改表格行和單元格樣式的相關資料,需要的朋友可以參考下
    2022-04-04
  • Vue+tsx使用slot沒有被替換的問題

    Vue+tsx使用slot沒有被替換的問題

    本文主要介紹了Vue+tsx使用slot沒有被替換的問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue2中插槽(slot)的基本使用規(guī)范

    vue2中插槽(slot)的基本使用規(guī)范

    插槽(Slot)是Vue提出來的一個概念,正如名字一樣,插槽用于決定將所攜帶的內容,插入到指定的某個位置,從而使模板分塊,具有模塊化的特質和更大的重用性,下面這篇文章主要給大家介紹了關于vue2中插槽(slot)的基本使用規(guī)范的相關資料,需要的朋友可以參考下
    2022-03-03
  • vue.js路由跳轉詳解

    vue.js路由跳轉詳解

    這篇文章主要為大家詳細介紹了vue.js路由跳轉的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • vue左側菜單,樹形圖遞歸實現代碼

    vue左側菜單,樹形圖遞歸實現代碼

    這篇文章主要介紹了vue左側菜單,樹形圖遞歸實現代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08

最新評論