Greasy Fork

Greasy Fork is available in English.

超星键盘控制优化

优化超星键盘控制观看体验,小键盘上下左右控制时间音量,加减控制倍速,若无效请单击窗口任一处再尝试,若仍无效请反馈

当前为 2021-06-13 提交的版本,查看 最新版本

      // ==UserScript==
      // @name         超星键盘控制优化
      // @namespace    http://greasyfork.icu/zh-CN/users/782923-aaaasea
      // @version      1.2
      // @description  优化超星键盘控制观看体验,小键盘上下左右控制时间音量,加减控制倍速,若无效请单击窗口任一处再尝试,若仍无效请反馈
      // @author       Asea Q:569389750
      // @match        https://mooc1-1.chaoxing.com/mycourse/studentstudy*
      // @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
      // @grant        none
      // ==/UserScript==

      (function() {
        mainfn_flag = false
        window.onload =()=>{
          if(mainfn_flag===false)
        {
          mainfn = setInterval(mainkeybind, 1000);
          mainfn_flag = true;
        }
        }
        var old_url = window.location.href;
        if(mainfn_flag===false)
        {
          mainfn = setInterval(mainkeybind, 1000);
          mainfn_flag = true;
        }
        
        function mainkeybind(){
            if(document.readyState == 'complete'){

              // console.log('---超星键盘控制优化---')
              // console.log('开始绑定')
              urlfn = setInterval(url_listener, 2000) 
              //reurn false 禁止函数内部执行其他的事件或者
              var vol = 0.1;  //1代表100%音量,每次增减0.1
              var time = 5; //单位秒,每次增减10秒
              var rate = 0.2
              try
              {
                var videoElement = document.getElementById("iframe").contentWindow.document.querySelector("iframe").contentWindow.document.querySelector('video');
              // console.log('变量设置完毕')
              document.onkeyup = keybind
              videoElement.onkeyup = keybind
              function keybind(event) {//键盘事件
              // console.log("keyCode:" + event.keyCode);
              var e = event || window.event || arguments.callee.caller.arguments[0];

              //鼠标上下键控制视频音量
              if (e && e.keyCode === 38) {

                  // 按 向上键
                  videoElement.volume !== 1 ? videoElement.volume += vol : 1;
                  return false;

              } else if (e && e.keyCode === 40) {

                  // 按 向下键
                  videoElement.volume !== 0 ? videoElement.volume -= vol : 1;
                  return false;

              } else if (e && e.keyCode === 37) {

                  // 按 向左键
                  videoElement.currentTime !== 0 ? videoElement.currentTime -= time : 1;
                  return false;

              } else if (e && e.keyCode === 39) {

                  // 按 向右键
                  videoElement.volume !== videoElement.duration ? videoElement.currentTime += time : 1;
                  return false;

              } else if (e && e.keyCode === 32) {

                  // 按空格键 判断当前是否暂停
                  videoElement.paused === true ? videoElement.play() : videoElement.pause();
                  return false;
              } else if(e && e.keyCode === 187) {

                videoElement.playbackRate > 0 && videoElement.playbackRate < 16 ? videoElement.playbackRate = (videoElement.playbackRate+rate).toFixed(1) : 1;
                return false;

              } else if(e && e.keyCode === 189) {

                videoElement.playbackRate > 0 ? videoElement.playbackRate = (videoElement.playbackRate-rate).toFixed(1) : 1;
                return false;

              }
              };
              console.log('键盘事件绑定成功')
              clearInterval(mainfn);
              mainfn_flag = false;
            }
            catch{
              console.log('loading')
            }
              
              
            }
          }
          
          function url_listener()
          {
            var now_url = window.location.href;
            if (now_url !== old_url)
            {
              old_url = now_url;
              mainfn = setInterval(mainkeybind, 500);
              clearInterval(urlfn);
            }
          }
      })();