Greasy Fork is available in English.
1. Display youdao.com r###lts alongside the original r###lts on bing.com/dict. 2. Provide shortcuts for many online tools.
// ==UserScript== // @name 在 bing词典 中聚合显示 有道 的结果 添加转跳至各种在线工具的按钮 // @namespace http://tampermonkey.net/ // @version 11.2.1 // @license MIT // @description 1. Display youdao.com r###lts alongside the original r###lts on bing.com/dict. 2. Provide shortcuts for many online tools. // @author 庶民player // @match *.bing.com/dict* // @match *.bing.net/dict* // @icon https://cn.bing.com/sa/simg/favicon-2x.ico // @run-at document-idle // @compatible edge // @compatible chrome // @compatible safari // @grant none // ==/UserScript== function clone_a(name) { const original = document.getElementById('b-scopeListItem-images'); if (!original) return; const tmp = original.cloneNode(true); tmp.id = name; original.parentNode.insertBefore(tmp, original.nextSibling); } function clone_b(name) { const original = document.getElementById('b-scopeListItem-flights'); if (!original) return; const tmp = original.cloneNode(true); tmp.id = name; original.parentNode.insertBefore(tmp, original.nextSibling); } function check_emp(x) { return x.length > 0; } function go_dn(elem_name) { const elem = document.querySelector(elem_name); if (!elem) return; const parent = elem.parentNode; let nextSibling = elem.nextElementSibling; while (nextSibling) { parent.appendChild(elem); // 将当前元素移至末尾,实现下移 nextSibling = elem.nextElementSibling; } } (function() { 'use strict'; var wd = "NONE"; var path = window.location.pathname.split('/').filter(check_emp); if(path.length > 1) wd = path[path.length -1]; var vals = window.location.search.substring(1).split('&'); for(var i in vals){ var pair = vals[i].split('='); if(pair[0] == "q") wd = pair[1]; } wd = wd.replace(/%20/g,'+'); wd = wd.split('+').filter(check_emp).join('+'); try{ if(vals.length > 2) window.history.replaceState(null, null, 'https://' + window.location.hostname + '/dict/search?mkt=zh-CN&q=' + wd); }catch(error){} //-=-=-=-=-=-=-=-=-=-=-=-=-以下修改各种按钮-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- document.getElementById('b-scopeListItem-local').style.display = 'none'; clone_b('oxford');clone_b('cambridge');clone_b('mw');clone_b('pwr'); const mwLink = document.getElementById('mw').querySelector('a'); mwLink.textContent = "webster"; mwLink.href = "https://www.merriam-webster.com/dictionary/" + wd; const oxfordLink = document.getElementById('oxford').querySelector('a'); oxfordLink.textContent = "oxford"; oxfordLink.href = 'https://www.oxfordlearnersdictionaries.com/definition/english/'+wd; const cambridgeLink = document.getElementById('cambridge').querySelector('a'); cambridgeLink.textContent = "cambridge"; cambridgeLink.href = 'https://dictionary.cambridge.org/zhs/dictionary/english/'+wd; const pwrLink = document.getElementById('pwr').querySelector('a'); pwrLink.textContent = "pwr thesaurus"; pwrLink.href = 'https://www.powerthesaurus.org/'+wd; const flightsLink = document.getElementById('b-scopeListItem-flights').querySelector('a'); flightsLink.textContent = "urban dict"; flightsLink.href = 'https://www.urbandictionary.com/define.php?term='+wd; go_dn("#b-scopeListItem-flights"); clone_a('acronyms');clone_a('jtw');clone_a('anti');clone_a('full_write');clone_a('rhyme');clone_a('wenku'); const wenkuLink = document.getElementById('wenku').querySelector('a'); wenkuLink.textContent = "论文例句 & 替词"; wenkuLink.href = 'http://www.esoda.org/?q='+ wd; const antiLink = document.getElementById('anti').querySelector('a'); antiLink.textContent = "反义词"; antiLink.href = 'https://zh.powerthesaurus.org/' + wd +'/antonyms'; const rhymeLink = document.getElementById('rhyme').querySelector('a'); rhymeLink.textContent = "押韵"; rhymeLink.href = 'https://www.wordhippo.com/what-is/words-that-rhyme-with/'+ wd + '.html'; const fullWriteLink = document.getElementById('full_write').querySelector('a'); fullWriteLink.textContent = "全写"; fullWriteLink.href = 'https://www.allacronyms.com/'+ wd; const acronymsLink = document.getElementById('acronyms').querySelector('a'); acronymsLink.textContent = "缩写"; acronymsLink.href = 'https://acronymify.com/search?q='+ wd; const jtwLink = document.getElementById('jtw').querySelector('a'); jtwLink.textContent = "搭配"; jtwLink.href = 'http://www.just-the-word.com/main.pl?word='+ wd; const videoLink = document.getElementById('b-scopeListItem-video').querySelector('a'); videoLink.textContent = "源流"; videoLink.href = 'https://www.etymonline.com/word/'+ wd; const imagesLink = document.getElementById('b-scopeListItem-images').querySelector('a'); imagesLink.textContent = "同义词"; imagesLink.href = 'https://www.thesaurus.com/browse/'+ wd; go_dn("#jtw"); go_dn("#wenku"); go_dn("#b-scopeListItem-images"); go_dn("#anti"); go_dn("#acronyms"); go_dn("#full_write"); go_dn("#b-scopeListItem-dictionary"); go_dn("#b-scopeListItem-video"); go_dn("#rhyme"); go_dn("#b-scopeListItem-menu"); //-=-=-=-=-=-=-=-=-=-=-=-=-以下显示各种按钮-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- const mouse_on_effect = {filter: "drop-shadow(0px 1px 3px #808080)", transition: "0.1s", transitionTimingFunction: "ease-out"}; const mouse_out_effect = {filter: "drop-shadow(0px 1px 3px #d0d0d0)", transition: "0.1s", transitionTimingFunction: "ease-out"}; const linggle_button = document.createElement('button'); linggle_button.className = 'btn btn-sm'; const headerElem = document.getElementById('b_header'); const logoElem = document.querySelector('.b_logo'); Object.assign(linggle_button.style, { border: "0", backgroundColor: "transparent", cursor: "pointer", position: "absolute", left: (headerElem.offsetLeft + 57) + "px", top: (headerElem.offsetTop + headerElem.offsetHeight - 37) + "px" }); linggle_button.innerHTML = ` <img src="https://search.linggle.com/linggle-logo.png" alt="linggle-logo" width=${parseInt(logoElem.offsetWidth * 0.6)}px /> `; linggle_button.onclick = function() { location.href = "https://search.linggle.com/?q=" + wd; } document.body.append(linggle_button); const ludwig_button = document.createElement('button'); ludwig_button.className = 'btn btn-sm'; Object.assign(ludwig_button.style, { border: "0", backgroundColor: "transparent", cursor: "pointer", position: "absolute", left: (headerElem.offsetLeft + 14) + "px", top: (headerElem.offsetTop + headerElem.offsetHeight - 37 -11) + "px" }); ludwig_button.innerHTML = ` <img src="https://ludwig.guru/icons/icon_144x144.png" alt="ludwig-logo" height=${parseInt(logoElem.offsetHeight * 2.0)}px /> `; ludwig_button.onclick = function() { location.href = "https://ludwig.guru/s/" + wd; } document.body.append(ludwig_button); const searchForm = document.getElementById('sb_form_q'); const searchBox = document.getElementById('sb_search'); const gaoshan_height = parseInt(searchForm.offsetHeight * 1.25); const gaoshan_button = document.createElement('button'); gaoshan_button.className = 'btn btn-sm'; Object.assign(gaoshan_button.style, { border: "0", backgroundColor: "transparent", cursor: "pointer", position: "absolute", left: parseInt(searchBox.offsetLeft + searchBox.offsetWidth + 2.7 * gaoshan_height) + "px", top: parseInt(searchForm.offsetTop + searchForm.offsetHeight - gaoshan_height + 6) + "px" }); Object.assign(gaoshan_button.style, { filter: mouse_out_effect.filter, transition: mouse_out_effect.transition, transitionTimingFunction: mouse_out_effect.transitionTimingFunction }); gaoshan_button.onmouseout = function() { Object.assign(gaoshan_button.style, { filter: mouse_out_effect.filter, transition: mouse_out_effect.transition, transitionTimingFunction: mouse_out_effect.transitionTimingFunction }); }; gaoshan_button.onmouseover = function() { Object.assign(gaoshan_button.style, { filter: mouse_on_effect.filter, transition: mouse_on_effect.transition, transitionTimingFunction: mouse_on_effect.transitionTimingFunction }); }; gaoshan_button.innerHTML = ` <img src= "https://picx.zhimg.com/v2-23056dfc4cb2193ea32e50a5679cbfce_1440w.png" alt="gaoshan-logo" height=`+ gaoshan_height +`px /> `; gaoshan_button.onclick = function() { location.href = "http://www.dicts.cn/"; } document.body.append(gaoshan_button); const deepl_button = document.createElement('button'); deepl_button.className = 'btn btn-sm'; Object.assign(deepl_button.style, { border: "0", backgroundColor: "transparent", cursor: "pointer", position: "absolute", left: parseInt(searchBox.offsetLeft + searchBox.offsetWidth + 1.55 * gaoshan_height) + "px", top: parseInt(searchForm.offsetTop + searchForm.offsetHeight - gaoshan_height + 10) + "px" }); Object.assign(deepl_button.style, { filter: mouse_out_effect.filter, transition: mouse_out_effect.transition, transitionTimingFunction: mouse_out_effect.transitionTimingFunction }); deepl_button.onmouseout = function() { Object.assign(deepl_button.style, { filter: mouse_out_effect.filter, transition: mouse_out_effect.transition, transitionTimingFunction: mouse_out_effect.transitionTimingFunction }); }; deepl_button.onmouseover = function() { Object.assign(deepl_button.style, { filter: mouse_on_effect.filter, transition: mouse_on_effect.transition, transitionTimingFunction: mouse_on_effect.transitionTimingFunction }); }; deepl_button.innerHTML = ` <img src= "https://static.deepl.com/img/logo/DeepL_Logo_darkBlue_v2.svg" alt="deepl-logo" height=`+ gaoshan_height +`px /> `; deepl_button.onclick = function() { location.href = "https://www.deepl.com/translator#en/zh/" + wd.replace(/\+/g,' '); } document.body.append(deepl_button); const baidu_button = document.createElement('button'); baidu_button.className = 'btn btn-sm'; Object.assign(baidu_button.style, { border: "0", backgroundColor: "transparent", cursor: "pointer", position: "absolute", left: parseInt(searchBox.offsetLeft + searchBox.offsetWidth + 0.37 * gaoshan_height) + "px", top: parseInt(searchForm.offsetTop + searchForm.offsetHeight - gaoshan_height + 10) + "px" }); Object.assign(baidu_button.style, { filter: mouse_out_effect.filter, transition: mouse_out_effect.transition, transitionTimingFunction: mouse_out_effect.transitionTimingFunction }); baidu_button.onmouseout = function() { Object.assign(baidu_button.style, { filter: mouse_out_effect.filter, transition: mouse_out_effect.transition, transitionTimingFunction: mouse_out_effect.transitionTimingFunction }); }; baidu_button.onmouseover = function() { Object.assign(baidu_button.style, { filter: mouse_on_effect.filter, transition: mouse_on_effect.transition, transitionTimingFunction: mouse_on_effect.transitionTimingFunction }); }; baidu_button.innerHTML = ` <img src= "https://pica.zhimg.com/80/v2-4e3567b24ba7d7cfc8d496d932f73ed6_1440w.webp" alt="baidu-logo" height=`+ gaoshan_height*0.8 +`px /> `; baidu_button.onclick = function() { location.href = "https://chat.baidu.com/search?word=翻译:「" + wd.replace(/\+/g,' ')+"」。搜索涉及的术语、名言或#语等约定#成的内容,提供各种翻译版本,并注明原句出处或权#参考等来源。若有多句,逐句分解,每句给出多种翻译后综合一种最佳版本。输出应包含:找到的参考(用表格呈现)、(若有多句)每句翻译选项(用无序列表呈现)和最终版本。"; } document.body.append(baidu_button); //-=-=-=-=-=-=-=-=-=-=-=-=-=-以下显示有道-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- const sidebar = document.querySelector(".sidebar"); if (sidebar) sidebar.style.display = "none"; const idRh = document.getElementById("id_rh"); if (idRh) idRh.style.display = "none"; const idRhW = document.getElementById("id_rh_w"); if (idRhW) idRhW.remove(); if (wd == "NONE") return; var youdao_top_padding = 190; var youdao_left_padding = 120; var youdao_width = 640; var lfArea = document.querySelector(".lf_area"); var bing_width = lfArea ? lfArea.offsetWidth : 0; // Similar to $(".lf_area").width() var margin = window.innerWidth - youdao_width - bing_width; document.getElementById("b_footer").style.display = "none"; if (lfArea) { lfArea.style.position = "absolute"; lfArea.style.left = parseInt(margin * 0.34) + "px"; } var closeButtons = document.querySelectorAll('.pos_close'); closeButtons.forEach(function(button) { button.click(); }); const expend_button = document.getElementById("ex_id"); if (expend_button) expend_button.click(); var noR###lts = document.querySelector(".no_r###lts"); var isNoR###ltsVisible = noR###lts ? (window.getComputedStyle(noR###lts).display !== "none") : false; if (!isNoR###ltsVisible) { var div = document.createElement('div'); div.style.overflow = "hidden"; div.style.position = "absolute"; div.style.right = parseInt(margin * 0.16) + "px"; var contentPadding = document.querySelector(".contentPadding"); if (contentPadding) { // Get position similar to $(".contentPadding").position().top var rect = contentPadding.getBoundingClientRect(); var scrollTop = window.pageYOffset || document.documentElement.scrollTop; div.style.top = (rect.top + scrollTop) + "px"; div.style.height = document.documentElement.scrollHeight * 1.02 - (rect.top + scrollTop) + "px"; } div.style.width = youdao_width + "px"; var iframe = document.createElement('iframe'); iframe.style.position = "relative"; iframe.style.top = (-youdao_top_padding) + "px"; iframe.style.left = (-youdao_left_padding) + "px"; iframe.src = "https://dict.youdao.com/w/" + wd.replace(/\+/g, ' '); iframe.frameBorder = "0"; iframe.scrolling = "no"; iframe.width = (youdao_left_padding + youdao_width) + "px"; iframe.height = document.documentElement.scrollHeight * 1.02 + "px"; div.appendChild(iframe); document.body.appendChild(div); } else { var bgdiv = document.createElement('div'); bgdiv.style.overflow = "hidden"; bgdiv.style.position = "absolute"; bgdiv.style.left = "0px"; var header = document.getElementById("b_header"); if (header) { bgdiv.style.top = (header.offsetHeight + 25) + "px"; bgdiv.style.height = document.documentElement.scrollHeight-(header.offsetHeight + 25) + "px"; bgdiv.style.width = header.offsetWidth + "px"; //bgdiv.height = document.documentElement.scrollHeight + "px"; var iframe = document.createElement('iframe'); iframe.width = header.offsetWidth + "px"; iframe.style.position = "relative"; iframe.style.top = (-youdao_top_padding) + "px"; iframe.src = "https://www.youdao.com/w/" + wd.replace(/\+/g, ' '); iframe.frameBorder = "0"; iframe.scrolling = "no"; iframe.height = document.documentElement.scrollHeight + "px"; bgdiv.appendChild(iframe); document.body.appendChild(bgdiv); // Create additional empty div var emptyDiv = document.createElement('div'); emptyDiv.style.overflow = "hidden"; emptyDiv.style.position = "absolute"; emptyDiv.style.backgroundColor = "#fcfcfe"; emptyDiv.style.left = "810px"; emptyDiv.style.top = (header.offsetHeight + 50) + "px"; emptyDiv.style.width = (header.offsetWidth - 850) + "px"; emptyDiv.style.height = (document.documentElement.scrollHeight - 250) + "px"; document.body.appendChild(emptyDiv); } } })();