开发Chrome扩展:如何快速干净移除YouTube频道的Shorts标签?
移除YouTube频道Shorts标签的可靠方案
针对你遇到的多语言适配、位置不稳定、API限制等问题,这里提供一个基于路由路径的精准解决方案,完全避开你提到的所有坑:
核心思路
YouTube频道的Shorts标签对应的跳转路由始终包含/shorts(比如/channel/UCxxxx/shorts、/c/ChannelName/shorts),这个路径和界面语言无关,是识别Shorts标签的可靠依据。结合MutationObserver处理YouTube的SPA动态加载特性,就能实现干净、高效的移除。
实现代码
// 适配当前YouTube频道导航的元素选择器(若后续界面更新,只需调整这里) const TABS_CONTAINER_SELECTOR = 'tp-yt-paper-tabs, yt-tab-shape-wiz'; const TAB_ITEM_SELECTOR = 'tp-yt-paper-tab, yt-tab-shape'; function removeShortsTab() { const tabs = document.querySelectorAll(TAB_ITEM_SELECTOR); tabs.forEach(tab => { const link = tab.querySelector('a[href]'); // 通过路径中的/shorts关键词精准定位Shorts标签 if (link && link.pathname.includes('/shorts')) { tab.remove(); } }); } // 页面初始化时先执行一次 removeShortsTab(); // 监听DOM变化,处理SPA跳转或动态加载场景 const observer = new MutationObserver((mutations) => { for (const mutation of mutations) { if (mutation.addedNodes.length && document.querySelector(TABS_CONTAINER_SELECTOR)) { removeShortsTab(); break; // 避免重复执行 } } }); // 开启全局DOM监听 observer.observe(document.body, { childList: true, subtree: true });
关键优势
- 多语言兼容:不依赖界面文字,完全不受YouTube语言设置影响;
- 位置无关:不管Shorts标签在第几位,只要路由匹配就会被移除;
- 高效轻量:无需API调用或重定向解析,直接操作DOM,性能开销极小;
- 动态适配:
MutationObserver确保在频道页面动态加载、从其他页面跳转过来时,都能及时移除标签。
注意事项
如果后续YouTube更新界面元素结构,只需调整代码中的TABS_CONTAINER_SELECTOR和TAB_ITEM_SELECTOR,匹配新的导航容器和标签元素即可。
内容的提问来源于stack exchange,提问作者WIZI
相关产品推荐
相关产品推荐

