FullScreen.vue 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <template>
  2. <div>
  3. <slot
  4. name="trigger"
  5. :is-full-screen="isFullScreen"
  6. >
  7. <div
  8. class=" has-active"
  9. @click="changeFullScreen"
  10. >
  11. {{ isFullScreen ? "退出" : "全屏" }}
  12. </div>
  13. </slot>
  14. </div>
  15. </template>
  16. <script>
  17. export default {
  18. name: 'FullScreen',
  19. data () {
  20. return {
  21. isFullScreen: !!this.$route.params.isFullScreen
  22. }
  23. },
  24. methods: {
  25. changeFullScreen () {
  26. const element = document.documentElement
  27. // 如果是全屏状态
  28. if (this.isFullScreen) {
  29. // 如果浏览器有这个Function
  30. if (document.exitFullscreen) {
  31. document.exitFullscreen()
  32. } else if (document.webkitCancelFullScreen) {
  33. document.webkitCancelFullScreen()
  34. } else if (document.mozCancelFullScreen) {
  35. document.mozCancelFullScreen()
  36. } else if (document.msExitFullscreen) {
  37. document.msExitFullscreen()
  38. }
  39. } else if (element.requestFullscreen) {
  40. element.requestFullscreen()
  41. } else if (element.webkitRequestFullScreen) {
  42. element.webkitRequestFullScreen()
  43. } else if (element.mozRequestFullScreen) {
  44. element.mozRequestFullScreen()
  45. } else if (element.msRequestFullscreen) {
  46. element.msRequestFullscreen()
  47. }
  48. this.isFullScreen = !this.isFullScreen
  49. }
  50. }
  51. }
  52. </script>
  53. <style
  54. lang="
  55. scss"
  56. scoped
  57. ></style>