iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 23
0
Modern Web

弄點簡單的 Chrome Extension 讓生活更方便系列 第 23

Chrome Extension 23 - Youtube 筆記功能 Part 4 完成 vue 的新增訊息操作

  • 分享至 

  • xImage
  •  

續上篇,確定可以使用 vue,所以開始使用 vue 完成功能 :

content.vue 的 templdate 部分 :

<template>
<el-container style="position : fixed;top : 75px;right : 5px;">
  <el-main>
  <el-button type="success"  @click="play()">播放按鈕</el-button>
    <el-row>
        <span>{{videoName}} - {{currentTime}}</span>
    </el-row>
    <el-row>
        <input type="text" v-model="currentMessage" />
    </el-row>
    <el-row>
        <el-button type="success"  @click="saveData()">儲存</el-button>
    </el-row>
    <el-row>
        <ul v-for="item in items">
            <li>{{item.message}}</li>
        </ul>
    </el-row>
  </el-main>
</el-container>
</template>

content.vue 的 script 部分 :

<script>
  export default {
    data: () => ({
      currentTime : 0,
      currentMessage : '',
      items :[],
      videoName : ''
    }),
    computed: { },
    created () { },
    mounted() {
        this.videoName = this.getParameter('v');
        this.showTime();
        this.loadData();
    },
    updated() {

    },
    methods: {
    play(){
            document.querySelector('.ytp-play-button').click();
    },
    showTime(){
        var vm = this;
        (function () { 
            let animationTimer = setInterval(function() {
            var video = document.getElementsByClassName('video-stream')[0];  
            var  t = Math.floor(video.currentTime);

            if(vm.currentTime !== t)
            {
                vm.currentTime = t;
            }

            }, 500);
        })(); 
    } , 
    loadData : function(){
          var vm = this; 
          var name = "tempData_"+ vm.videoName ;
          chrome.storage.local.get("tempData",function(result) {
            vm.items = result.tempData;
            console.log(result);
          if(vm.items=== undefined)
          {
            vm.items = [];
          }
        });
      },
      saveData : function(){
          var vm = this;
          var name = "tempData_"+ vm.videoName ;
          var vm = this;
           var myFilter = vm.items.filter(function(item, index, array){
                return item.time == vm.currentTime; 
            });
           if(myFilter.length > 0)
           {
                var myIndex = vm.items.findIndex(myFilter);
                vm.items[myIndex].message = vm.currentMessage;
           }
           else
           {
                var item ={
                    time : vm.currentTime,
                    message : vm.currentMessage
                }
                vm.items.push(item);
           }

        chrome.storage.local.set({ "tempData" : vm.items},function() {});
      },
      getParameter (name, url) {
                if (!url) url = window.location.href;
                name = name.replace(/[\[\]]/g, "\\$&");
                var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
                    results = regex.exec(url);
                if (!results) return null;
                if (!results[2]) return '';
                return decodeURIComponent(results[2].replace(/\+/g, " "));
        }
    },
    watch :{
        currentTime : function(newValue, oldValue){
            var vm = this;

            var myFilter = vm.items.filter(function(item, index, array){
                return item.time == newValue; 
            });
            if(myFilter.length > 0)
            {
                vm.currentMessage = myFilter[0].message;
            }
            else
            {
                vm.currentMessage = '';
            }
            
        }
    }
  }
</script>

雖然畫面還需要調整,但已經可以儲存訊息 :
https://ithelp.ithome.com.tw/upload/images/20181107/20094223ZfnUE62Y6B.png

文字已可以隨著影格時間移動,顯示當下紀錄的訊息 :
https://blog.givemin5.com/wp-content/uploads/2018/11/HyperCamVideos0010.gif

感謝收看 :)


上一篇
Chrome Extension 22 - Youtube 筆記功能 Part 3 改使用 vue 顯示
下一篇
Chrome Extension 24 - Youtube 筆記功能修改樣式
系列文
弄點簡單的 Chrome Extension 讓生活更方便30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言