您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在 nodeseek.com 搜索框右侧增加一个 Google site 搜索图标按钮,并支持回车触发搜索
// ==UserScript== // @name Nodeseek Google Site Search Icon Button // @namespace https://www.baixiaosheng.de/ // @version 1.7 // @description 在 nodeseek.com 搜索框右侧增加一个 Google site 搜索图标按钮,并支持回车触发搜索 // @author baixiaosheng // @match *://nodeseek.com/* // @match *://*.nodeseek.com/* // @grant none // @license MIT // ==/UserScript== (function () { 'use strict'; const SITE_DOMAIN = 'nodeseek.com'; function googleSearch(q) { if (!q) return; const full = `site:${SITE_DOMAIN} ${q}`; window.open('https://www.google.com/search?q=' + encodeURIComponent(full), '_blank'); } function addButton(input) { if (!input || input.dataset.gsiteBtnAdded) return; input.dataset.gsiteBtnAdded = "1"; const btn = document.createElement("button"); btn.title = "用 Google 搜索"; btn.innerHTML = "🔍G"; btn.style.position = "absolute"; btn.style.right = "2.2em"; btn.style.top = "50%"; btn.style.transform = "translateY(-50%)"; btn.style.border = "none"; btn.style.background = "transparent"; btn.style.cursor = "pointer"; btn.style.fontSize = "14px"; btn.style.color = "#4285F4"; btn.style.padding = "0 4px"; const searchHandler = () => { const q = input.value.trim(); if (q) googleSearch(q); }; // 点击按钮触发 btn.addEventListener("click", searchHandler); // 回车触发 input.addEventListener("keydown", (e) => { if (e.key === "Enter") { e.preventDefault(); // 防止表单提交或页面刷新 searchHandler(); } }); const wrapper = input.parentElement; if (wrapper && getComputedStyle(wrapper).position === "static") { wrapper.style.position = "relative"; } wrapper.appendChild(btn); } function findAndAttach() { // 优先用 id="search-site2",其次 name="q" const input = document.getElementById("search-site2") || document.querySelector('input[name="q"]'); if (input) addButton(input); } // 初次运行 findAndAttach(); // 监听 SPA 动态渲染 const mo = new MutationObserver(findAndAttach); mo.observe(document.body, { childList: true, subtree: true }); })();