// ==UserScript== // @name 搜索引擎增强 // @namespace search_enhance_namespace // @version 3.0.0 // @description 搜索引擎导航增强,支持百度、必应、Google等 // @author Your Name // @include *://www.baidu.com/* // @include *://www.so.com/s* // @include *://www.sogou.com/web* // @include *://cn.bing.com/search* // @include *://www.bing.com/search* // @include *://www.google.com/search* // @include *://www.google.com.hk/search* // @require https://code.jquery.com/jquery-3.6.0.min.js // @grant GM_getValue // @grant GM_setValue // @grant GM_xmlhttpRequest // @license MIT License // @downloadURL https://update.greasyfork.icu/scripts/524101/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E5%A2%9E%E5%BC%BA.user.js // @updateURL https://update.greasyfork.icu/scripts/524101/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E5%A2%9E%E5%BC%BA.meta.js // ==/UserScript== function SearchEnginesNavigation() { // 导航配置数据(统一使用body作为容器) this.searchEnginesData = [ {"host": "www.baidu.com", "element": "body", "elementInput": "#kw"}, {"host": "www.so.com", "element": "body", "elementInput": "#keyword"}, {"host": "www.sogou.com", "element": "body", "elementInput": "#upquery"}, {"host": "cn.bing.com", "element": "body", "elementInput": "#sb_form_q"}, {"host": "www.bing.com", "element": "body", "elementInput": "#sb_form_q"}, {"host": "www.google.com", "element": "body", "elementInput": "input[name='q'],textarea[name='q']"}, {"host": "www.google.com.hk", "element": "body", "elementInput": "input[name='q'],textarea[name='q']"} ]; // 默认导航数据 this.defaultNavigationData = [ {"name": "搜索引擎", "list": [ {"name": "百度", "url": "https://www.baidu.com/s?wd=@@"}, {"name": "必应", "url": "https://cn.bing.com/search?q=@@"}, {"name": "Google", "url": "https://www.google.com/search?q=@@"} ]}, {"name": "综合搜索", "list": [ {"name": "知乎搜索", "url": "https://www.zhihu.com/search?q=@@"}, {"name": "豆瓣搜索", "url": "https://www.douban.com/search?q=@@"}, {"name": "小红书", "url": "https://www.xiaohongshu.com/search_result?keyword=@@"}, {"name": "CSDN", "url": "https://so.csdn.net/so/search?q=@@"}, {"name": "博客园", "url": "https://www.cnblogs.com/search?q=@@"}, {"name": "GitHub", "url": "https://github.com/search?q=@@"} ]}, {"name": "视频搜索", "list": [ {"name": "B站搜索", "url": "https://search.bilibili.com/all?keyword=@@"}, {"name": "抖音", "url": "https://www.douyin.com/search/@@"}, {"name": "YouTube", "url": "https://www.youtube.com/results?search_query=@@"} ]} ]; // 创建导航HTML this.createHtml = function (element, elementInput, navigationData) { const elementId = Math.ceil(Math.random() * 100000000); const hostKey = window.location.host; // 统一CSS样式 const css = ` #search_nav_${elementId} { position: fixed; top: ${GM_getValue(`navPosition_${hostKey}`)?.y || 120}px; left: ${GM_getValue(`navPosition_${hostKey}`)?.x || 20}px; z-index: 999999; width: 280px; max-height: 80vh; overflow-y: auto; cursor: move; user-select: none; padding: 12px 15px; background: rgba(255, 255, 255, 0.95); border-radius: 12px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08); backdrop-filter: blur(5px); border: 1px solid rgba(0, 0, 0, 0.05); } #search_nav_${elementId} .nav-title { font-size: 13px; font-weight: 500; margin-bottom: 8px; color: ${window.location.host === "www.google.com" ? "#5f6368" : "#666"}; padding-bottom: 4px; border-bottom: 1px solid rgba(0, 0, 0, 0.05); } #search_nav_${elementId} .nav-links { display: flex; flex-wrap: wrap; gap: 6px; } #search_nav_${elementId} .nav-links a { display: inline-block; padding: 4px 8px; color: #555; text-decoration: none; font-size: 13px; background: rgba(0, 0, 0, 0.02); border-radius: 6px; transition: all 0.2s ease; } #search_nav_${elementId} .nav-links a:hover { color: #1a73e8; background: rgba(26, 115, 232, 0.05); transform: translateY(-1px); } #search_nav_${elementId} .nav-section { margin-bottom: 12px; width: 100%; } #search_nav_${elementId} .nav-section:last-child { margin-bottom: 0; } `; // 添加样式 const style = document.createElement('style'); style.textContent = css; document.head.appendChild(style); // 创建导航HTML let html = `
`; navigationData.forEach(category => { html += ` `; }); html += '
'; // 添加到页面 const targetElement = document.querySelector(element); if (targetElement) { targetElement.insertAdjacentHTML('afterbegin', html); // 绑定点击事件 const searchInput = document.querySelector(elementInput); document.querySelectorAll(`#search_nav_${elementId} a`).forEach(link => { link.addEventListener('click', () => { const keyword = searchInput ? searchInput.value : ''; const url = link.dataset.url.replace('@@', encodeURIComponent(keyword)); window.open(url, '_blank'); }); }); // 添加拖拽功能 const navElement = document.querySelector(`#search_nav_${elementId}`); if (navElement) { let isDragging = false; let startX, startY, initialX, initialY; navElement.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; startY = e.clientY; initialX = navElement.offsetLeft; initialY = navElement.offsetTop; navElement.style.opacity = '0.8'; }); document.addEventListener('mousemove', (e) => { if (!isDragging) return; const dx = e.clientX - startX; const dy = e.clientY - startY; navElement.style.left = `${initialX + dx}px`; navElement.style.top = `${initialY + dy}px`; }); document.addEventListener('mouseup', () => { if (isDragging) { isDragging = false; navElement.style.opacity = '1'; GM_setValue(`navPosition_${hostKey}`, { x: navElement.offsetLeft, y: navElement.offsetTop }); } }); } } }; // 搜索引擎结果优化 this.hooks = function () { const host = window.location.host; if (host === "www.baidu.com") { this.hookBaidu(); } else if (host === "www.google.com") { this.hookGoogle(); } else if (host === "www.bing.com" || host === "cn.bing.com") { this.hookBing(); } }; // 必应搜索优化 this.hookBing = function () { // 处理必应的广告 const removeAds = () => { document.querySelectorAll('.b_ad').forEach(ad => ad.remove()); }; // 定期检查并移除广告 setInterval(removeAds, 1000); // 新标签页打开搜索结果 document.querySelectorAll('.b_algo a').forEach(link => { link.setAttribute('target', '_blank'); }); }; // Google搜索优化 this.hookGoogle = function () { // 搜索结果新标签页打开 const addTargetBlank = () => { document.querySelectorAll('#search .g a:not([target="_blank"])').forEach(link => { if (!link.getAttribute('target')) { link.setAttribute('target', '_blank'); } }); }; // 增加延迟,确保页面元素加载完成 setTimeout(() => { addTargetBlank(); }, 1000); }; // 初始化显示 this.show = function () { const host = window.location.host; const currentEngine = this.searchEnginesData.find(engine => engine.host === host); if (currentEngine) { this.createHtml(currentEngine.element, currentEngine.elementInput, this.defaultNavigationData); this.hooks(); } }; // 启动 this.start = function () { this.show(); }; } // 启动脚本 (new SearchEnginesNavigation()).start();