您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
访问百度首页时,自动删除热搜模块、特定菜单项,并模拟完整点击“我的关注”以显示内容
// ==UserScript== // @name 百度首页定制:移除热搜并直达我的关注 (v1.3 - 模拟完整点击) // @namespace http://tampermonkey.net/ // @version 1.3 // @description 访问百度首页时,自动删除热搜模块、特定菜单项,并模拟完整点击“我的关注”以显示内容 // @author ai // @match https://www.baidu.com/ // @match http://www.baidu.com/ // @grant none // @license MIT // @run-at document-idle // ==/UserScript== (function() { 'use strict'; console.log("百度首页定制脚本开始运行 (v1.3)..."); // 目标元素选择器 const hotSearchSelector = '#s-hotsearch-wrapper'; const menuItem99Selector = 'span.s-menu-item[data-id="99"]'; // 通常是 "hao123" const myFollowMenuItemSelector = '#s_menu_mine'; // "我的关注" 的 ID const activeFollowClass = 'current'; // "我的关注" 激活时的 class function customizeBaidu() { // 1. 删除 <div id="s-hotsearch-wrapper"> const hotSearchDiv = document.querySelector(hotSearchSelector); if (hotSearchDiv) { hotSearchDiv.remove(); console.log("已删除热搜模块:", hotSearchSelector); } else { console.log("未找到热搜模块:", hotSearchSelector); } // 2. 删除 <span class="s-menu-item" data-id="99"> const menuItem99 = document.querySelector(menuItem99Selector); if (menuItem99) { menuItem99.remove(); console.log("已删除菜单项:", menuItem99Selector); } else { console.log("未找到菜单项:", menuItem99Selector); } // 3. 模拟点击 <span id="s_menu_mine"> const myFollowLink = document.querySelector(myFollowMenuItemSelector); if (myFollowLink) { // 增加延迟确保页面JS逻辑处理完毕 // 即使是模拟完整事件,适当的延迟仍然有益 setTimeout(() => { if (myFollowLink.offsetParent !== null) { // 检查元素是否可见 console.log("准备通过模拟完整事件点击“我的关注”..."); // 创建 MouseEvent 的参数对象 const eventInit = { bubbles: true, // 事件是否应该冒泡 cancelable: true, // 事件是否可以被取消 view: window // 指定事件的 EventView // 可以根据需要添加其他属性,如 clientX, clientY 等,但通常以上足够 }; // 模拟 mousedown 事件 const eventDown = new MouseEvent('mousedown', eventInit); myFollowLink.dispatchEvent(eventDown); console.log("已派发 mousedown 事件"); // 模拟 mouseup 事件 const eventUp = new MouseEvent('mouseup', eventInit); myFollowLink.dispatchEvent(eventUp); console.log("已派发 mouseup 事件"); // 模拟 click 事件 (虽然mousedown和mouseup通常会触发click,但显式派发更保险) const eventClick = new MouseEvent('click', eventInit); myFollowLink.dispatchEvent(eventClick); console.log("已派发 click 事件"); console.log("已尝试通过模拟完整事件点击“我的关注”:", myFollowMenuItemSelector); // 再次延迟后检查 "我的关注" 是否获得了 active class ('current') setTimeout(() => { if (myFollowLink.classList.contains(activeFollowClass)) { console.log(`“我的关注”标签已激活 (包含 '${activeFollowClass}' class)。内容应已显示。`); } else { console.warn(`“我的关注”标签未激活 (未找到 '${activeFollowClass}' class),内容可能未显示。当前类名:`, myFollowLink.className); // 进一步调试信息:可以看看它旁边兄弟元素(比如“推荐”)的class是什么 const prevSibling = myFollowLink.previousElementSibling; if (prevSibling) { console.log("“我的关注”的上一个兄弟元素 class:", prevSibling.className); } } }, 500); // 点击后稍等片刻检查状态 (500ms) } else { console.log("“我的关注”链接在延迟后仍然不可见。"); } }, 1000); // 延迟1秒后再尝试点击 (1000ms) } else { console.log("未找到“我的关注”链接:", myFollowMenuItemSelector); } console.log("百度首页定制脚本主要操作已提交。"); } // 确保在DOM内容加载完成后执行,或者在整个页面加载完成后执行 if (document.readyState === 'complete' || document.readyState === 'interactive') { customizeBaidu(); } else { // 使用 'load' 事件确保所有资源(包括可能影响JS行为的)都已加载 window.addEventListener('load', customizeBaidu); } })();