You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TamperMonkey脚本仅加载YouTube首页时不运行问题求解

问题原因

该现象由两个特性叠加导致,并非Tampermonkey bug:

  1. YouTube为单页应用,全站采用客户端侧导航,页面不会触发完整重载,仅在首次打开标签页时触发一次脚本注入
  2. Chrome对YouTube开启了预渲染(Prerender2)优化,地址栏输入YouTube地址时浏览器会提前在后台渲染页面,脚本会在预渲染的隐藏页面中执行,Tampermonkey会将预渲染页面的运行状态标记为无效,页面正式激活时脚本不会重新执行,就出现了短暂显示运行然后消失的现象
解决方案

方案1:修改脚本适配场景

调整脚本逻辑,兼容预渲染和YouTube页面切换规则,无需修改匹配规则,示例框架如下:
脚本头部配置:

// ==UserScript==
// @name         移除YouTube电视播放按钮
// @match        https://www.youtube.com/*
// @run-at       document-idle
// ==/UserScript==

脚本逻辑部分:

// 原有移除按钮逻辑
function removeCastButton() {
  const castBtn = document.querySelector('.ytp-cast-button');
  if (castBtn) castBtn.remove();
}

// 适配预渲染场景
if (document.prerendering) {
  document.addEventListener('prerenderingchange', () => {
    removeCastButton();
    // 监听YouTube原生导航事件,页面切换后自动重新执行
    document.addEventListener('yt-navigate-finish', removeCastButton);
  });
} else {
  removeCastButton();
  document.addEventListener('yt-navigate-finish', removeCastButton);
}

// 兜底:监听DOM变化,处理动态渲染的按钮
const observer = new MutationObserver(removeCastButton);
observer.observe(document.body, { childList: true, subtree: true });

方案2:调整Tampermonkey全局配置

无需修改脚本,打开Tampermonkey设置页面,拉到最底部「实验性」板块,关闭「注入到预渲染页面」开关,即可解决预渲染导致的脚本不执行问题。单页应用页面切换的问题仍需给脚本添加yt-navigate-finish事件监听。

内容的提问来源于stack exchange,提问作者nnnnnn_nnnnnnn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:39:02