您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Search with selected text by pressing s(Google), t(Translate) or o(Oxford) within 2 seconds.
- // ==UserScript==
- // @name SelectAndGo
- // @namespace com.gmail.fujifruity.greasemonkey
- // @version 1.3
- // @description Search with selected text by pressing s(Google), t(Translate) or o(Oxford) within 2 seconds.
- // @author fujifruity
- // @match *://*/*
- // @grant GM.openInTab
- // @license MIT
- // ==/UserScript==
- {
- const timeoutMs = 2000
- const shortcuts = selection => ({
- s: () => GM.openInTab("https://www.google.com/search?q=" + selection, false),
- t: () => GM.openInTab("https://translate.google.com/#en/ja/" + selection, false),
- i: () => GM.openInTab("https://www.google.com/search?tbm=isch&q=" + selection, false),
- m: () => GM.openInTab("https://www.google.com/maps/search/" + selection, false),
- o: () => {
- const url = "https://www.oxfordlearnersdictionaries.com/search/english/?q="
- // the website requires hyphen-separated words
- const query = selection.replace(/\s+/g, '-')
- GM.openInTab(url + query, false)
- },
- c: () => alert(selection.length + ' characters') // count chars
- })
- const onKeydown = event => {
- if (["INPUT", "TEXTAREA"].includes(event.target.tagName)) return
- if (event.ctrlKey || event.altKey) return
- const selection = window.getSelection().toString()
- shortcuts(selection)[event.key]()
- }
- const unsetShortcut = () => window.removeEventListener('keydown', onKeydown)
- window.addEventListener('selectstart', () => {
- window.addEventListener('keydown', onKeydown)
- // unset shortcuts in seconds.
- window.onmouseup = () => {
- setTimeout(unsetShortcut, timeoutMs)
- window.onmouseup = null
- }
- // unset shortcuts when selection is triggerd by ctrl+a
- window.onkeyup = () => {
- setTimeout(unsetShortcut, timeoutMs)
- window.onkeyup = null
- }
- })
- }