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.2
// @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 log = (...msg) => console.log('SelectAndGo:', ...msg)
const onKeydown = (event) => {
if (event.target.tagName == "INPUT" || event.ctrlKey || event.altKey) return
const selection = window.getSelection().toString()
switch (event.key) {
case 's':
GM.openInTab("https://www.google.com/search?q=" + selection, false)
break
case 't':
GM.openInTab("https://translate.google.com/#en/ja/" + selection, false)
break
case 'i':
GM.openInTab("https://www.google.com/search?tbm=isch&q=" + selection, false)
break
case '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)
break
}
case 'c':
// count chars
alert(window.getSelection().toString().length + ' characters')
break
}
}
const unsetShortcut = () => window.removeEventListener('keydown', onKeydown)
log('listen selectstart')
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
}
})
}