您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
划词翻译调用“必应翻译(必应词典)、谷歌翻译、有道词典(有道翻译)、必应在线翻译、百度翻译、Oxford Advanced Learner's Dictionary”网页翻译
当前为
// ==UserScript== // @name Translate // @namespace http://tampermonkey.net/ // @version 1.7 // @description 划词翻译调用“必应翻译(必应词典)、谷歌翻译、有道词典(有道翻译)、必应在线翻译、百度翻译、Oxford Advanced Learner's Dictionary”网页翻译 // @author barrer // @match http://*/* // @include https://*/* // @include file:///* // @run-at document-end // @grant GM_setValue // @grant GM_getValue // ==/UserScript== (function () { 'use strict'; // Your code here... var baiduValue = GM_getValue('barrer-Translate-baidu'), bingValue = GM_getValue('barrer-Translate-bing'), bingTranslatorValue = GM_getValue('barrer-Translate-bingTranslator'), googleValue = GM_getValue('barrer-Translate-google'), oaldValue = GM_getValue('barrer-Translate-oald'), youdaoValue = GM_getValue('barrer-Translate-youdao'); if (baiduValue && window.location.href.startsWith('https://fanyi.baidu.com')) { GM_setValue('barrer-Translate-baidu', ''); var source = document.querySelector('#baidu_translate_input'); source.value = baiduValue; tiggerEvent(source, 'input'); document.querySelector('#translate-button').click(); } if (bingValue && window.location.href.startsWith('https://cn.bing.com/dict')) { GM_setValue('barrer-Translate-bing', ''); } if (bingTranslatorValue && window.location.href.startsWith('https://www.bing.com/translator')) { GM_setValue('barrer-Translate-bingTranslator', ''); var source = document.querySelector('#srcText'); source.value = bingTranslatorValue; tiggerEvent(source, 'input'); document.querySelector('#TranslateButton').click(); } if (googleValue && window.location.href.startsWith('https://translate.google.com')) { GM_setValue('barrer-Translate-google', ''); var source = document.querySelector('#source'); source.value = googleValue; tiggerEvent(source, 'input'); tiggerEvent(source, 'keyup'); document.querySelector('#gt-submit').click(); } if (oaldValue && window.location.href.startsWith('https://www.oxfordlearnersdictionaries.com')) { GM_setValue('barrer-Translate-oald', ''); document.querySelector('.searchfield_input').value = oaldValue; document.querySelector('#search-btn input').click(); } if (youdaoValue && window.location.href.startsWith('https://dict.youdao.com')) { GM_setValue('barrer-Translate-youdao', ''); } if (window.location.href.startsWith('https://fanyi.baidu.com') || window.location.href.startsWith('https://cn.bing.com/dict') || window.location.href.startsWith('https://www.bing.com/translator') || window.location.href.startsWith('https://translate.google.com') || window.location.href.startsWith('https://www.oxfordlearnersdictionaries.com') || window.location.href.startsWith('https://dict.youdao.com') ) document.onkeydown = escExit; /**Esc键关闭窗口*/ function escExit(e) { e = e || window.event; var isEscape = false; if ("key" in e) isEscape = (e.key == "Escape" || e.key == "Esc"); else isEscape = (e.keyCode == 27); if (isEscape) window.close(); } /**触发事件*/ function tiggerEvent(el, type) { if ('createEvent' in document) {// modern browsers, IE9+ var e = document.createEvent('HTMLEvents'); e.initEvent(type, false, true); el.dispatchEvent(e); } else {// IE 8 var e = document.createEventObject(); e.eventType = type; el.fireEvent('on' + e.eventType, e); } } /**弹出居中窗口*/ function popupCenter(url, title, w, h) { var x = screen.width / 2 - w / 2; var y = screen.height / 2 - h / 2; var win = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' + y + ', left=' + x); if (window.focus) { win.focus(); } return win; } /**日志输出*/ function log() { var debug = false; if (!debug) return; if (arguments) { for (var i = 0; i < arguments.length; i++) { console.log(arguments[i]); } } } log('url:' + window.location.href); // 翻译图标 var icon = document.createElement('div'), style = '' + 'font-family:Arial,sans-serif!important;' + 'font-weight:normal!important;' + 'background:#f60!important;' + 'color:#fff!important;' + 'border-radius:3px!important;' + 'font-size:13px!important;' + 'line-height:100%!important;' + 'padding:2px 4px!important;' + 'margin:0 4px!important;' + 'display:inline-block!important;' + 'text-decoration:none!important;' + ''; icon.innerHTML = '' + '<a href="javascript:void(0)" style="' + style + '" type="bing">必应</a>' + '<a href="javascript:void(0)" style="' + style + '" type="google">谷歌</a>' + '<a href="javascript:void(0)" style="' + style + '" type="youdao">有道</a>' + '<a href="javascript:void(0)" style="' + style + '" type="bingTranslator">必译</a>' + '<a href="javascript:void(0)" style="' + style + '" type="baidu">百度</a>' + '<a href="javascript:void(0)" style="' + style + '" type="oald">OALD</a>' + ''; icon.setAttribute('style', '' + 'display:none!important;' + 'position:absolute!important;' + 'font-size:13px!important;' + 'text-align:left!important;' + 'z-index:2147483647!important;' + ''); // 添加翻译图标到 DOM document.documentElement.appendChild(icon); // 鼠标事件:防止选中的文本消失 document.addEventListener('mousedown', function (e) { if (e.target == icon || (e.target.parentNode && e.target.parentNode == icon)) {// 点击了翻译图标 e.preventDefault(); } }); // 选中变化事件:当点击已经选中的文本的时候,隐藏翻译图标和翻译面板(此时浏览器动作是:选中的文本已经取消选中了) document.addEventListener("selectionchange", function () { log('selectionchange:' + window.getSelection().toString()); if (!window.getSelection().toString().trim()) { icon.style.display = 'none'; } }); // 鼠标事件:防止选中的文本消失;显示、隐藏翻译图标 document.addEventListener('mouseup', function (e) { if (e.target == icon || (e.target.parentNode && e.target.parentNode == icon)) {// 点击了翻译图标 e.preventDefault(); return; } var text = window.getSelection().toString().trim(); log('click text:' + text); if (text && icon.style.display == 'none') { log('show icon'); log(text + '|' + e.pageX + '|' + e.pageY); icon.style.top = e.pageY + 10 + 'px'; icon.style.left = e.pageX + 10 + 'px'; icon.style.display = 'block'; } else if (!text) { log('hide icon'); icon.style.display = 'none'; } }); // 翻译图标点击事件 icon.addEventListener('click', function (e) { var text = window.getSelection().toString().trim(); if (text) { log('text:' + text); var engine = e.target.hasAttribute('type') ? e.target.getAttribute('type') : ''; log('engine:' + engine); if (server[engine]) server[engine](text); } }); // 翻译server var server = { baidu: function (text) { GM_setValue('barrer-Translate-baidu', text); popupCenter('https://fanyi.baidu.com', null, 1024, 600); }, bing: function (text) { GM_setValue('barrer-Translate-bing', text); popupCenter('https://cn.bing.com/dict/search?q=' + encodeURIComponent(text), null, 800, 600); }, bingTranslator: function (text) { GM_setValue('barrer-Translate-bingTranslator', text); popupCenter('https://www.bing.com/translator', null, 800, 600); }, google: function (text) { GM_setValue('barrer-Translate-google', text); popupCenter('https://translate.google.com', null, 800, 600); }, oald: function (text) { GM_setValue('barrer-Translate-oald', text); popupCenter('https://www.oxfordlearnersdictionaries.com/definition/english', null, 800, 600); }, youdao: function (text) { GM_setValue('barrer-Translate-youdao', text); popupCenter('https://dict.youdao.com/w/eng/' + encodeURIComponent(text), null, 800, 600); } };// 翻译server结束 })();