您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
当前的视频并不会显示收藏的视频合集以及番剧,使其显示,与手机端一致
// ==UserScript== // @name 优化哔哩哔哩/B站动态首页'视频投稿'按钮使其显示全部视频 // @namespace http://tampermonkey.net/ // @version 1.5 // @description 当前的视频并不会显示收藏的视频合集以及番剧,使其显示,与手机端一致 // @author You // @match https://t.bilibili.com/* // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @license MIT // ==/UserScript== (function() { 'use strict'; // 你的固定CSS const fixedCSS = ` div.bili-dyn-list__item:not(:has(a.bili-dyn-card-video,a.bili-dyn-card-pgc)), div.bili-dyn-list__item:has(div.bili-dyn-content__orig__author) { display: none; } `; const cssStorageKey = 'customCSSEnabled'; let styleElement = null; let currentActiveTab = '全部'; // 默认激活的是"全部"标签 // 注入CSS的函数 function injectCSS() { if (styleElement) { document.head.removeChild(styleElement); } styleElement = document.createElement('style'); styleElement.id = 'bili-dyn-custom-css'; styleElement.textContent = fixedCSS; document.head.appendChild(styleElement); GM_setValue(cssStorageKey, true); } // 移除CSS的函数 function removeCSS() { const existingStyle = document.getElementById('bili-dyn-custom-css'); if (existingStyle) { existingStyle.parentNode.removeChild(existingStyle); } styleElement = null; GM_setValue(cssStorageKey, false); } // 处理标签点击事件 function handleTabClick(tabElement, tabName) { // 移除所有标签的active类 document.querySelectorAll('.bili-dyn-list-tabs__item.fs-medium').forEach(tab => { tab.classList.remove('active'); }); // 给当前点击的标签添加active类 tabElement.classList.add('active'); // 根据规则处理CSS if (currentActiveTab === '全部' && tabName === '视频投稿') { // 从"全部"切换到"视频投稿",加载CSS injectCSS(); } else if (currentActiveTab === '视频投稿' && tabName !== '视频投稿') { // 从"视频投稿"切换到其他标签,移除CSS removeCSS(); } else if (currentActiveTab !== '全部' && currentActiveTab !== '视频投稿' && tabName === '视频投稿') { // 从其他标签切换到"视频投稿",需要先点击"全部"再切换到"视频投稿" const allTab = findTabByText('全部'); if (allTab) { // 先模拟点击"全部" handleTabClick(allTab, '全部'); // 然后切换到"视频投稿" setTimeout(() => { handleTabClick(tabElement, '视频投稿'); }, 100); return; // 直接返回,不更新currentActiveTab } } // 更新当前激活的标签 currentActiveTab = tabName; } // 通过文本内容查找标签 function findTabByText(text) { const tabs = document.querySelectorAll('.bili-dyn-list-tabs__item.fs-medium'); for (let tab of tabs) { if (tab.textContent.includes(text)) { return tab; } } return null; } // 初始化标签点击事件 function initTabs() { const tabs = document.querySelectorAll('.bili-dyn-list-tabs__item.fs-medium'); tabs.forEach(tab => { // 克隆节点以移除原有事件监听器 const clonedTab = tab.cloneNode(true); tab.parentNode.replaceChild(clonedTab, tab); // 获取标签文本内容 const tabText = clonedTab.textContent.trim(); // 添加点击事件 clonedTab.addEventListener('click', function(e) { e.preventDefault(); e.stopPropagation(); handleTabClick(clonedTab, tabText); }); }); // 设置初始状态(全部按钮默认激活) const allTab = findTabByText('全部'); if (allTab) { allTab.classList.add('active'); currentActiveTab = '全部'; } // 检查之前是否有保存的状态 GM_getValue(cssStorageKey, false).then((savedState) => { if (savedState) { injectCSS(); } }); } // 使用MutationObserver监听DOM变化 const observer = new MutationObserver(function(mutations) { const tabsContainer = document.querySelector('.bili-dyn-list-tabs__list'); if (tabsContainer) { initTabs(); // 找到后可以停止观察,或者根据需求调整 observer.disconnect(); } }); // 页面加载后尝试初始化 if (document.querySelector('.bili-dyn-list-tabs__list')) { initTabs(); } else { // 如果容器不存在,开始观察DOM变化 observer.observe(document.body, { childList: true, subtree: true }); } })();