您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds search engines to Google's results page
- // ==UserScript==
- // @name Google Search Site Switch
- // @namespace https://github.com/yookibooki/userscripts
- // @description Adds search engines to Google's results page
- // @version 1.0
- // @match https://www.google.com/search*
- // @grant GM_addStyle
- // @grant GM_openInTab
- // ==/UserScript==
- (function() {
- 'use strict';
- if (document.readyState === 'loading') {
- document.addEventListener('DOMContentLoaded', init);
- } else {
- init();
- }
- function init() {
- const input = document.querySelector('input[name="q"], textarea[name="q"]');
- if (!input?.value) return;
- const query = encodeURIComponent(input.value);
- const engines = [
- ['Yandex', 'yandex.com', `https://yandex.com/search/?text=${query}`],
- ['Bing', 'bing.com', `https://www.bing.com/search?q=${query}`],
- ['DuckDuckGo', 'duckduckgo.com', `https://duckduckgo.com/?q=${query}`],
- ['Perplexity', 'perplexity.ai', `https://www.perplexity.ai/search?q=${query}`],
- ['Reddit', 'reddit.com', `https://www.reddit.com/search/?q=${query}`],
- ['Wikipedia', 'wikipedia.org', `https://en.wikipedia.org/wiki/Special:Search?search=${query}`],
- ['ChatGPT', 'chatgpt.com', `https://chatgpt.com/?q=${query}`],
- ['GitHub', 'github.com', `https://github.com/search?q=${query}`]
- ];
- GM_addStyle(`
- .gm-search-icons {
- display: flex;
- align-items: center;
- margin-left: 8px;
- gap: 8px;
- }
- .gm-search-icons img {
- width: 20px;
- height: 20px;
- transition: opacity 0.2s;
- }
- .gm-search-icons a:hover img {
- opacity: 0.8;
- }
- `);
- const container = document.createElement('div');
- container.className = 'gm-search-icons';
- container.innerHTML = engines.map(([name, domain, url]) =>
- `<a href="${url}" title="Search on ${name}">
- <img src="https://www.google.com/s2/favicons?domain=${domain}"
- alt="${name}" width="20" height="20">
- </a>`
- ).join('');
- container.addEventListener('click', e => {
- const link = e.target.closest('a');
- if (link) {
- e.preventDefault();
- GM_openInTab(link.href, { active: true, insert: true });
- }
- });
- const targetSelectors = [
- '#hdtb-sc > div > div > div.crJ18e',
- '#appbar',
- '#hdtb',
- '#top_nav'
- ];
- let target;
- for (const selector of targetSelectors) {
- target = document.querySelector(selector);
- if (target) break;
- }
- if (target) {
- target.appendChild(container);
- }
- }
- })();