Keep Scroll Position After Clicking Tabs on Channel Page

To Keep Scroll Position After Clicking Tabs on Channel Page

目前為 2023-07-05 提交的版本,檢視 最新版本

// ==UserScript==
// @name        Keep Scroll Position After Clicking Tabs on Channel Page
// @namespace   UserScript
// @match       https://www.youtube.com/*
// @grant       none
// @version     1.0
// @license MIT
// @author      CY Fung
// @description To Keep Scroll Position After Clicking Tabs on Channel Page
// ==/UserScript==


let lastScrollTop = 0;
let lastScrollTopUpdatedAt = 0;
const _requestAnimationFrame = requestAnimationFrame;
async function checker(endAt) {


  while (Date.now() - lastScrollTopUpdatedAt < endAt) {
    if (lastScrollTop !== document.documentElement.scrollTop) {
      lastScrollTopUpdatedAt = 0;

      document.documentElement.scrollTop = lastScrollTop;
      Promise.resolve().then(() => {

        document.documentElement.scrollTop = lastScrollTop;
      })
      setTimeout(() => {
        document.documentElement.scrollTop = lastScrollTop;
      }, 1)
      return;
    }
    await new Promise(_requestAnimationFrame)
  }
  lastScrollTopUpdatedAt = 0;


}
document.addEventListener('click', (evt) => {
  if (!evt || !evt.isTrusted) return;
  const target = evt.target;

  Promise.resolve().then(() => {

    let tab;
    if (target instanceof HTMLElement) {
      tab = HTMLElement.prototype.closest.call(target, 'tp-yt-paper-tab');
    }

    if (!tab) return;

    if (document.documentElement.scrollTop > 10) {
      lastScrollTop = document.documentElement.scrollTop;
      lastScrollTopUpdatedAt = Date.now();
      checker(830)
    }
  })

}, true)

QingJ © 2025

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