90 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
<template>
 | 
						|
  <div class="slw">
 | 
						|
    <iframe
 | 
						|
      v-if="isShow"
 | 
						|
      :id="id"
 | 
						|
      allow="autoplay *; microphone *; fullscreen *" allowfullscreen allowtransparency key="" allowusermedia frameBorder="no"
 | 
						|
      style="width: 100%; height: 100%;"
 | 
						|
      :src="`https://cdn.cunwuyun.cn/jssdk/slw/index.html?url=${src}`"></iframe>
 | 
						|
  </div>
 | 
						|
</template>
 | 
						|
 | 
						|
<script>
 | 
						|
  export default {
 | 
						|
    props: ['src'],
 | 
						|
 | 
						|
    name: 'slwVideo',
 | 
						|
 | 
						|
    data () {
 | 
						|
      return {
 | 
						|
        isShow: true,
 | 
						|
        id: `video-${new Date().getTime()}`
 | 
						|
      }
 | 
						|
    },
 | 
						|
 | 
						|
    watch: {
 | 
						|
      src: {
 | 
						|
        handler (val) {
 | 
						|
          if (val) {
 | 
						|
            this.isShow = false
 | 
						|
 | 
						|
            this.$nextTick(() => {
 | 
						|
              this.isShow = true
 | 
						|
            })
 | 
						|
          }
 | 
						|
        },
 | 
						|
        immediate: true,
 | 
						|
        deep: true
 | 
						|
      }
 | 
						|
    },
 | 
						|
 | 
						|
    mounted () {
 | 
						|
      window.addEventListener('message', e => {
 | 
						|
        if (e.data.type && e.data.name === 'fullscreen') {
 | 
						|
          this.requestFullScreen(document.getElementById(this.id))
 | 
						|
        }
 | 
						|
 | 
						|
        if (!e.data.type && e.data.name === 'fullscreen') {
 | 
						|
          this.exitFullscreen()
 | 
						|
        }
 | 
						|
      }, false)
 | 
						|
    },
 | 
						|
 | 
						|
    methods: {
 | 
						|
      exitFullscreen () {
 | 
						|
        if (document.exitFullscreen) {
 | 
						|
          document.exitFullscreen()
 | 
						|
        } else if (document.msExitFullscreen) {
 | 
						|
          document.msExitFullscreen()
 | 
						|
        } else if (document.mozCancelFullScreen) {
 | 
						|
          document.mozCancelFullScreen()
 | 
						|
        } else if (document.webkitExitFullscreen) {
 | 
						|
          document.webkitExitFullscreen()
 | 
						|
        }
 | 
						|
      },
 | 
						|
 | 
						|
      requestFullScreen (element) {
 | 
						|
        var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullScreen;
 | 
						|
        if (requestMethod) {
 | 
						|
          requestMethod.call(element);
 | 
						|
        } else if (typeof window.ActiveXObject !== 'undefined') {
 | 
						|
          var wscript = new ActiveXObject('WScript.Shell')
 | 
						|
          if (wscript !== null) {
 | 
						|
            wscript.SendKeys('{F11}')
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
</script>
 | 
						|
 | 
						|
<style lang="scss" scoped>
 | 
						|
  .slw {
 | 
						|
    width: 100%;
 | 
						|
    height: 100%;
 | 
						|
 | 
						|
    iframe {
 | 
						|
      border: none;
 | 
						|
    }
 | 
						|
  }
 | 
						|
</style> |