Always video progress bar on anime1

Enable progress bar on anime1

// ==UserScript==
// @name         Always video progress bar on anime1
// @namespace    https://github.com/gslin/always-video-progress-bar-on-anime1
// @version      0.20210508.0
// @description  Enable progress bar on anime1
// @author       Gea-Suan Lin <[email protected]>
// @match        https://anime1.me/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
  'use strict';

  // Only \d+ will match.
  if (!document.location.pathname.match(/^\/\d+/)) {
    return;
  }

  const bar = document.createElement('div');
  bar.style = 'background: #000; display: block; height: 5px; margin: 0; padding: 0; position: relative; width: 100%;';

  const loadedbar = document.createElement('div');
  loadedbar.style = 'background: #777; display: block; height: 5px; margin: 0; padding: 0; position: absolute; width: 100%;';
  bar.appendChild(loadedbar);

  const progressbar = document.createElement('div');
  progressbar.style = 'background: red; display: block; height: 5px; margin: 0; padding: 0; position: absolute; width: 100%; z-index: 1;';
  bar.appendChild(progressbar);

  const vjscontainer = document.querySelector('.vjscontainer');
  vjscontainer.appendChild(bar);

  const ob = new window.MutationObserver(() => {
    const vjs = document.querySelector('.video-js');
    if (!vjs || !vjs.classList.contains('vjs-playing')) {
      return;
    }

    const v = document.querySelector('video.vjs-tech');
    if (!v) {
      return;
    }

    v.addEventListener('progress', () => {
      loadedbar.style.width = (100 * v.buffered.end(0) / v.duration) + '%';
    });
    v.addEventListener('timeupdate', () => {
      progressbar.style.width = (100 * v.currentTime / v.duration) + '%';
    });

    ob.disconnect();
  });

  ob.observe(document, {
    childList: true,
    subtree: true,
  });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址