zoukankan      html  css  js  c++  java
  • JavaScript 网页图标变成视频图标

    看下图,仔细看↓

    class VideoIcon {
      constructor(videoPath, iconSize = 32) {
        this.videoPath = videoPath;
        this.iconSize = iconSize;
        this.iconLink = null;
        this.video = null;
        this.canvas = null;
      }
    
      initVideo() {
        const video = document.createElement('video');
        video.crossOrigin = 'anonymous';
        video.controls = true;
        video.src = this.videoPath;
        video.width = 0;
        video.autoplay = true;
        video.style.display = 'none';
        this.video = video;
        document.body.appendChild(video);
      }
    
      bindVideoEvent() {
        const {video} = this;
        video.addEventListener('timeupdate', (e) => {
          this.videoToImage();
        })
      }
    
      initCanvas() {
        const canvas = document.createElement('canvas');
        canvas.width = this.iconSize;
        canvas.height = this.iconSize;
        this.canvas = canvas;
      }
    
      videoToImage() {
        const context = this.canvas.getContext('2d');
        const {iconSize, video} = this;
        context.clearRect(0, 0, iconSize, iconSize);
        context.drawImage(video, 0, 0, iconSize, iconSize);
        this.setFaviconIcon();
      }
    
      setFaviconIcon() {
        const url = this.canvas.toDataURL();
        this.iconLink.href = url;
      }
    
      getLinkIconTag() {
        const head = document.querySelector('head');
        const links = Array.from(head.querySelectorAll('link'));
        const [iconTag] = links.filter(item => item.rel === 'icon');
        if (iconTag) {
          this.iconLink = iconTag;
        } else {
          const link = document.createElement('link');
          link.rel = 'icon';
          this.iconLink = link;
          document.head.appendChild(link);
        }
      }
    
      init() {
        this.getLinkIconTag()
        this.initVideo()
        this.initCanvas()
        this.bindVideoEvent()
      }
    }
    

    demo

    可以将上面的代码存入云端,然后为chrmoe新建一个书签,将书签的网址改为以下:

    javascript:(function(){let script=document.createElement('script');script.id ='vIcon';script.src='http://39.102.71.103:8080/js/v.js';if(document.querySelector('#vIcon')){script=null;return null;}document.body.appendChild(script);script.onload=function(){const v=new VideoIcon('http://39.102.71.103:8080/video/chicken.mp4').init();}})();
    

    然后我们打开http网站的页面点击我们设置好的书签,图标就开始播放视频啦

    为之则易,不为则难。
  • 相关阅读:
    C语言I博客作业08
    第十一周助教总结
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I作业004
    第十三周助教总结
    C语言I博客作业09
    第十二周助教总结
    C语言I博客作业08
  • 原文地址:https://www.cnblogs.com/coderDemo/p/14118888.html
Copyright © 2011-2022 走看看