// ==UserScript== // @name 切换百度谷歌搜索引擎 // @namespace http://tampermonkey.net/ // @version 0.8 // @description 在百度和谷歌搜索之间快速切换的脚本 // @author Blazing // @match https://www.google.com/* // @match https://www.google.com.hk/* // @match https://www.google.com.tw/* // @match https://www.google.co.jp/* // @match https://www.google.co.kr/* // @match https://www.baidu.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=google.com.hk // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function () { 'use strict'; // 搜索引擎配置 const SEARCH_ENGINES = { google: { domainPrefix: 'www.google.', // 使用前缀匹配 pathStart: '/search', queryParam: 'q', searchUrl: 'https://www.google.com/search?q=' }, baidu: { domain: 'www.baidu.com', pathStart: '/s', queryParam: 'wd', searchUrl: 'https://www.baidu.com/s?wd=' } }; // 获取当前搜索引擎和目标搜索引擎 function getCurrentEngine(domain) { return Object.entries(SEARCH_ENGINES).find(([_, config]) => config.domains.includes(domain))?.[0]; } function getTargetEngine(currentEngine) { return currentEngine === 'google' ? 'baidu' : 'google'; } // 获取搜索词 function getSearchQuery(engine) { const queryParams = new URLSearchParams(window.location.search); return queryParams.get(SEARCH_ENGINES[engine].queryParam); } // 执行搜索 function openSearch(query, engine) { if (!query) return; const url = SEARCH_ENGINES[engine].searchUrl + encodeURIComponent(query); window.open(url, '_self'); } // 处理快捷键 function handleHotkey(e) { if (!(e.ctrlKey && e.shiftKey && e.key === 'S')) return; e.preventDefault(); const currentDomain = window.location.hostname; const currentPath = window.location.pathname; const currentEngine = getCurrentEngine(currentDomain); if (!currentEngine) return; const engineConfig = SEARCH_ENGINES[currentEngine]; if (!currentPath.startsWith(engineConfig.pathStart)) return; const searchQuery = getSearchQuery(currentEngine); const targetEngine = getTargetEngine(currentEngine); openSearch(searchQuery, targetEngine); } // 添加搜索引擎切换按钮 function addSearchEngineButton() { const currentDomain = window.location.hostname; let searchQuery; // 判断是否为谷歌域名 const isGoogle = currentDomain.startsWith(SEARCH_ENGINES.google.domainPrefix); // 针对不同搜索引擎获取搜索词 if (isGoogle) { searchQuery = new URLSearchParams(window.location.search).get('q'); } else if (currentDomain === SEARCH_ENGINES.baidu.domain) { const urlParams = new URLSearchParams(window.location.search); searchQuery = urlParams.get('wd'); } if (!searchQuery) return; if (isGoogle) { // 在谷歌搜索页添加百度搜索按钮 const allTab = document.querySelector('[aria-current="page"]'); if (allTab && allTab.parentElement && allTab.parentElement.nextElementSibling) { const existingButton = allTab.parentElement.parentElement.querySelector('.nPDzT[data-search-engine="baidu"]'); if (!existingButton) { const baiduButton = document.createElement('a'); baiduButton.className = 'nPDzT T3FoJb'; baiduButton.setAttribute('data-search-engine', 'baidu'); baiduButton.href = `https://www.baidu.com/s?wd=${encodeURIComponent(searchQuery)}`; baiduButton.innerHTML = '