快捷搜索引擎切换器:支持新增、删除、排序、位置自定义
一个快捷切换浏览器搜索引擎的油猴脚本,让你在任何网页都能快速切换搜索引擎。
首先需要在浏览器中安装一个用户脚本管理器:
引擎列表
显示位置
行为选项
脚本默认启用以下 6 个搜索引擎:
其他搜索引擎默认隐藏,可在设置中手动启用。
本脚本采用纯原生 JavaScript 实现,主要包含以下模块:
GM_getValue / GM_setValue 或 localStorage 持久化用户配置function activeEngineIdByHost() {
const host = location.hostname;
return config.engines.find((e) =>
(e.hosts || []).some((h) => host.includes(h))
)?.id;
}
function getCurrentQuery() {
const url = new URL(location.href);
const params = url.searchParams;
// 尝试常见的搜索参数名
for (const key of ['q', 'query', 'wd', 'keyword', 'search_query', 'text']) {
const val = params.get(key);
if (val) return val.trim();
}
return '';
}
function buildSearchUrl(engine, query) {
return engine.searchUrl.replace('{q}', encodeURIComponent(query));
}
overscroll-behavior: contain 防止设置面板滚动穿透Search-Engine-Switcher.js
├── 配置定义 (DEFAULT_CONFIG)
├── 工具函数
│ ├── 配置读写 (safeGMGet/safeGMSet)
│ ├── 配置导入导出 (exportConfig/importConfig)
│ ├── 深拷贝 (deepClone)
│ └── HTML 转义 (escapeHtml)
├── 核心功能
│ ├── 域名匹配 (isMatchHost)
│ ├── 搜索引擎检测 (activeEngineIdByHost/isSearchPage)
│ ├── 搜索词提取 (getCurrentQuery/resolveQuery)
│ └── URL 构建 (buildSearchUrl)
├── UI 组件
│ ├── 创建根元素 (createRoot)
│ ├── 渲染引擎按钮 (renderEngineButtons)
│ ├── 拖拽定位 (startDragPositioning)
│ ├── 设置面板 (renderPanel/openPanel/closePanel)
│ ├── 离线使用指南 (showOfflineGuide)
│ └── 主题应用 (applyTheme)
├── 引擎管理
│ ├── 移动引擎 (moveEngine)
│ ├── 删除引擎 (deleteEngine)
│ ├── 编辑引擎 (editEngine)
│ ├── 切换面板可见性 (toggleEngineVisibility)
│ └── 切换悬浮窗注入 (toggleWidgetVisibility)
└── 初始化
├── 首次安装检测 (checkFirstInstallOrUpdate)
└── 启动脚本 (init)
特别感谢 Via 浏览器 提供的灵感!Via 浏览器是一款极简而强大的安卓浏览器,以其小巧的体积、丰富的自定义功能和优秀的用户体验赢得了众多用户的喜爱。
Via 浏览器的搜索引擎切换功能设计得非常巧妙,本脚本正是希望将这种优秀的交互体验带到桌面浏览器中,让用户在任何网页都能享受便捷的搜索引擎切换。
MIT License
欢迎提交 Issue 和 Pull Request!
via 前缀彻底替换为 ses 或 search_engine_switcher)。includes)导致的在无关网页(例如访问 picasso.com 时被识别为 so.com 360搜索)中错误显示悬浮窗的问题。