您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Find selection text on THBWiki
// ==UserScript== // @name find-me-at-thbwiki // @namespace Gizeta.Debris.FindMeAtTHBWiki // @version 0.1.1 // @description Find selection text on THBWiki // @author Gizeta // @match *://*/* // @grant none // ==/UserScript== /* jshint esversion: 6 */ const API = 'https://thwiki.cc/api.php?action=query&format=json&uselang=zh&list=search&srlimit=5&srsearch='; function getTooltipTarget(create = false) { const target = document.getElementById('find-me-at-thbwiki-tooltip'); if (!create || target) return target; const tooltip = document.createElement('div'); tooltip.id = 'find-me-at-thbwiki-tooltip'; tooltip.style.position = 'absolute'; tooltip.style.backgroundColor = '#ddd'; tooltip.style.maxWidth = '50%'; tooltip.style.padding = '5px'; document.body.appendChild(tooltip); return tooltip; } function getPosition() { const rect = document.getSelection().getRangeAt(0).getBoundingClientRect(); const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; const top = Math.floor(scrollTop + rect.top + rect.height); const left = Math.floor(rect.left); return [top, left]; } function showTooltip(result) { const tooltip = getTooltipTarget(true); const [top, left] = getPosition(); tooltip.style.display = 'block'; tooltip.style.fontSize = '14px'; tooltip.style.color = 'black'; tooltip.style.top = `${top}px`; tooltip.style.left = `${left}px`; tooltip.innerHTML = result.map(([title, content]) => `<h3><a href="https://thwiki.cc/${title}" target="_blank" rel="noopener noreferrer">${title}</a></h3><div>${content}</div>`); } function hideToolip() { if (getTooltipTarget()) getTooltipTarget().style.display = 'none'; } document.body.addEventListener("mouseup", () => { const selection = document.getSelection(); if (!selection || selection.type === "Caret") { hideToolip(); return; } fetch(API + selection.toString().trim()).then(resp => resp.json()).then(data => { if (data.query && data.query.search && data.query.search.length > 0) showTooltip(data.query.search.map(x => [x.title, x.snippet])); else showTooltip('', 'not found'); }); });