// ==UserScript== // @name dict.cn // @namespace https://dict.cn/ // @version 0.1 // @description englist dictionary // @author dict.cn // @match *://*/* // @grant none // @downloadURL https://update.greasyfork.icu/scripts/371611/dictcn.user.js // @updateURL https://update.greasyfork.icu/scripts/371611/dictcn.meta.js // ==/UserScript== (function (h, n) { var script_ = document.createElement('script'); script_.type = 'text/javaScript'; script_.src = 'https://i1.haidii.com/v/1493890502/i1/js/jquery-1.8.0.min.js'; document.getElementsByTagName('head')[0].appendChild(script_); var t = "3.1"; if (h.dictHc) { return } var U = h.dictHc = {}; var c = "" + h.location.host; var am = h.document, aa = am.documentElement; var ap = [], e = false; var au = {}, m = document.createElement("div"), G; m.style.display = "none"; m.innerHTML = "a"; G = m.getElementsByTagName("a")[0]; au = { style: /red/.test(G.getAttribute("style")), hrefNormalized: G.getAttribute("href") === "/a" }; var ao = { "for": "htmlFor", "class": "className", readonly: "readOnly", maxlength: "maxLength", cellspacing: "cellSpacing", rowspan: "rowSpan", colspan: "colSpan", tabindex: "tabIndex", usemap: "useMap", frameborder: "frameBorder" }; var M = /^(?:href|src|style)$/; var al = function (a) { return new al.fn.init(a) }; al.fn = al.prototype = { init: function (a) { var aD = this; aD.dom = (typeof a === "string") ? am.getElementById(a) : w(a); return aD }, attr: function (a, aE) { var aI = this; if (typeof a === "object") { for (var aH in a) { aI.attr(aH, a[aH]) } return aI } a = ao[a] || a; var aG = aI.dom, aF = aE !== n, aD = M.test(a); if ((a in aG || aG[a] !== n) && !aD) { if (aF) { aG[a] = aE } else { return aG[a] } } else { if (!au.style && a === "style") { if (aF) { aG.style.cssText = "" + aE } else { return aG.style.cssText } } else { if (aF) { aG.setAttribute(a, "" + aE) } else { return !au.hrefNormalized && aD ? aG.getAttribute(a, 2) : aG.getAttribute(a) } } } return aI }, css: function (a, aE) { var aG = this; if (typeof a === "object") { for (var aF in a) { aG.css(aF, a[aF]) } return aG } var aD = aG.dom.style; a = H(a); if (aE !== n) { aD[a] = aE } else { return aD[a] } return aG }, show: function () { return this.css({ display: "block" }) }, hide: function () { return this.css({ display: "none" }) }, html: function (aD) { var aE = this, a = aE.dom; if (aD !== n) { a.innerHTML = ""; a.innerHTML = aD } else { return a.innerHTML } return aE }, text: function (aD) { var aE = this, a = aE.dom; if (aD !== n) { aE.html("").append(am.createTextNode(aD)) } else { return al.text([a]) } return aE }, offset: function () { var aD = this.dom.getBoundingClientRect(); var a = am.body, aH, aG, aE, aF; aH = aa.clientTop || a.clientTop || 0; aG = aa.clientLeft || a.clientLeft || 0; aE = h.pageYOffset || aa.scrollTop || a.scrollTop; aF = h.pageXOffset || aa.scrollLeft || a.scrollLeft; return { left: aD.left + aF - aG, top: aD.top + aE - aH } }, bind: function (a, aD) { var aG = this, aE = aG.dom, aF = {}; if (typeof a === "object") { aF = a } else { aF[a] = aD } for (a in aF) { al.bindEvent(aE, a, aF[a]) } return aG }, append: function (a) { var aD = this; aD.dom.appendChild(w(a)); return aD }, appendTo: function (a) { var aD = this; al(a).append(aD.dom); return aD }, contains: function (a) { return al.contains(this.dom, a) }, selfContains: function (aD) { if (aC(av)) { for (var a in av) { if (av[a] == aD || al.contains(av[a], aD)) { return false } } } else { if (av) { if (av == aD || al.contains(av, aD)) { return false } } } return this.dom === aD || al.contains(this.dom, aD) } }; al.fn.init.prototype = al.fn; al.text = function (a) { var aD = "", aF; for (var aE = 0; a[aE]; aE++) { aF = a[aE]; if (aF.nodeType === 3 || aF.nodeType === 4) { aD += aF.nodeValue } else { if (aF.nodeType !== 8) { aD += al.text(aF.childNodes) } } } return aD }; al.contains = function (a, aD) { return a.contains ? a != aD && a.contains(aD) : !!(a.compareDocumentPosition(aD) & 16) }; al.bindEvent = function (aF, aD, aE) { var a = aD + aE; aF["e" + a] = aE; aF[a] = function (aH) { aH = d(aH || window.event); if (/mouse(over|out)/i.test(aH.type) && ((aH.target !== aF && !al.contains(aF, aH.target)) || al.contains(aF, aH.relatedTarget))) { return } var aG = aF["e" + a](aH); if (aG === false) { if (aH.preventDefault) { aH.preventDefault(); aH.stopPropagation() } else { aH.returnValue = false } aH.cancelBubble = true } }; if (aF.addEventListener) { aF.addEventListener(aD, aF[a], false) } else { aF.attachEvent("on" + aD, aF[a]) } }; al.unbindEvent = function (aF, aD, aE) { var a = aD + aE; if (aF.removeEventListener) { aF.removeEventListener(aD, aF[a], false) } else { aF.detachEvent("on" + aD, aF[a]) } aF["e" + a] = aF[a] = null }; al.bindReady = function (a) { if (am.readyState === "complete") { return setTimeout(a, 1) } ap[ap.length] = a }; function an() { if (am.attachEvent && am.readyState !== "complete") { return } al.unbindEvent(am, am.addEventListener ? "DOMContentLoaded" : "readystatechange", an); Y() } function Y() { if (e) { return } for (var a in ap) { ap[a]() } e = true } al.bindEvent(am, am.addEventListener ? "DOMContentLoaded" : "readystatechange", an); al.bindEvent(h, "load", Y); al.cookie = function (aE, aF, aD) { if (typeof aF != "undefined") { aD = aD || {}; var a = aD.expires; if (aF === null) { aF = ""; a = -1 } if (typeof a === "number") { var aG = a; a = new Date(); a.setDate(a.getDate() + aG) } return (am.cookie = [encodeURIComponent(aE), "=" + encodeURIComponent(aF), a ? "; expires=" + a.toUTCString() : "", aD.path ? "; path=" + aD.path : "", aD.domain ? "; domain=" + aD.domain : "", aD.secure ? "; secure" : ""].join("")) } else { if (match = am.cookie.match(new RegExp("(^|;| )" + aE + "s*=([^;]*)(;|$)", "i"))) { return unescape(match[2]) } else { return null } } }; function w(a) { return a.dom ? a.dom : a } function H(a) { return a.replace(/-([a-z])/g, function (aD, aE) { return aE.toUpperCase() }) } function d(aE) { if (!aE.target) { aE.target = aE.srcElement || am } if (!aE.relatedTarget && aE.fromElement) { aE.relatedTarget = aE.fromElement === aE.target ? aE.toElement : aE.fromElement } if (aE.pageX == null && aE.clientX != null) { var aD = am.documentElement, a = am.body; aE.pageX = aE.clientX + (aD && aD.scrollLeft || a && a.scrollLeft || 0) - (aD && aD.clientLeft || a && a.clientLeft || 0); aE.pageY = aE.clientY + (aD && aD.scrollTop || a && a.scrollTop || 0) - (aD && aD.clientTop || a && a.clientTop || 0) } if (aE.which == null) { aE.which = aE.charCode != null ? aE.charCode : (aE.keyCode != null ? aE.keyCode : null) } if (!aE.which && aE.button !== n) { aE.which = (aE.button & 1 ? 1 : (aE.button & 2 ? 3 : (aE.button & 4 ? 2 : 0))) } return aE } function ah(a) { return a.replace(/[^\x00-\xff]/g, "**").length } function aw() { return false } function aC(a) { if (!a) { return false } if (typeof jQuery != "undefined") { return jQuery.isArray(a) } return Object.prototype.toString.call(a) === "[object Array]" } var x = am.documentElement; var S = ((typeof i1_home == "undefined" || i1_home == "") ? "https://i1.haidii.com" : i1_home) + "/i1/js/hc3/"; var ag = "default", av = ""; var o = al(am), P = al(h); U.init = function (a) { if (a) { if (a.area) { x = a.area } if (a.skin) { ag = a.skin } if (a.not) { av = a.not } } }; U.reset = function () { x = al(x) }; U.not = function (a) { av = a }; var L = function (aD, a) { if (typeof aD === "string") { I = aD } else { var aE = al(aD); I = v(aE.text()); a = aE.offset() } if (I) { az = { pageX: a.left, pageY: a.top + 10 }; g(); l(); s() } }; var ay = true; var ak = true; var aq = false; var ar = false; var C, X, ac, Z, i, aj, f; var K, V, aA, j, u, F; var W = false; var B = false, ae; var I = "", az, O; var q; al.bindReady(function () { x = al(x); al(am.createElement("link")).attr({ href: S + "skins/" + ag + "/hc.css?v" + t, rel: "stylesheet", type: "text/css" }).appendTo(am.getElementsByTagName("head")[0]); C = al(am.createElement("div")).attr({ id: "dictHcBtn", title: unescape("%u67E5%u8BE2%u5F53%u524D%u9009%u62E9%u8BCD") }).css("display", "none").html(unescape("%u67E5%u8BCD%u5178")).appendTo(am.body); X = al(am.createElement("div")).attr("id", "dictHcBtnTop").css("display", "none").appendTo(am.body); ac = al(am.createElement("div")); ac.attr("id", "dictHc").css("display", "none").html('
 
' + unescape("%u6D77%u8BCD%u8BCD%u5178%20-%20%u5B66%u5355%u8BCD%uFF0C%u7528%u6D77%u8BCD") + '

' + unescape("%u6B63%u5728%u52A0%u8F7D%u4E2D...") + '
' + unescape("%u5DF2%u5F00%u542F%u5212%u8BCD") + '
' + unescape("%u8BBE%u7F6E") + "
").appendTo(am.body); Z = al("dictHcDragMask"); i = al("dictHcContent"); K = al("dictHcLock"); V = al("dictHcClose"); aA = al("dictHcEnable"); j = al("dictHcSetting"); f = al(am.createElement("div")); f.attr("id", "dictHcSettingArea").css("display", "none").css("height", "42px").html('
').appendTo(am.body); u = al("dictHcSound"); F = al("dictHcDirect"); aj = al(am.createElement("div")); aj.attr({ id: "dictHcClosetip", href: "" }).appendTo(am.body); o.bind({ mouseup: z, keydown: R }); C.bind("mouseup", ai); K.bind("mouseup", A); V.bind("mouseup", E); j.bind({ click: function () { q = setTimeout(ab, 0) }, mouseout: ax }); f.bind({ mouseout: ax, mouseover: ab }); aA.bind("click", y); u.bind("change", function () { ak = al(this).attr("checked") ? true : false; if (h._dict_config && h.saveConfig) { if (ak) { h._dict_config.ss = (_dict_config.ss >> 1) << 1 } else { h._dict_config.ss |= 1 } h.saveConfig() } at("dictHcSound", ak); s() }); F.bind("change", function () { aq = F.attr("checked") ? true : false; at("dictHcDirect", aq) }); al("dictHcTop").bind("mousedown", J); o.bind({ mousemove: Q, mouseup: k }); var aD = aB("dictHcEnable"), aE = aB("dictHcSound"), a = aB("dictHcDirect"); if (aD && ay != (aD === "true")) { y() } if (aE) { ak = aE === "true" ? true : false } if (a) { aq = a === "true" ? true : false } if (!ay) { aj.append(aA).show() } U.query = L; N("dictHcAd", jQuery) }); function z(aG) { if (aG.which != 1 || B) { return } var aF = aG.target; if (ac.selfContains(aF) || f.selfContains(aF)) { return } g(); ad(); if (x.selfContains && !x.selfContains(aF)) { return } var aD; if (aD = am.selection) { var a = aD.createRange(), aE = a.parentElement(); if (!x.selfContains(aE)) { return } az = { pageX: aa.scrollLeft + a.boundingLeft, pageY: aa.scrollTop + a.boundingTop + a.boundingHeight - 8 } } else { az = aG } I = v(T(aG)); if (I && ay) { O = aF; if (aq || ar) { l(); s() } else { D() } } } function p(aE, aD) { var aF = v(jQuery(aE).text()), a = aF.indexOf(aD) > -1 ? true : false; return a } function T(aD) { var aE = "", a = aD.target; if (a.tagName == "TEXTAREA" || (a.tagName == "INPUT" && a.getAttribute("type") == "text")) { if (am.selection) { aE = am.selection.createRange().text } else { if (h.getSelection) { if (a.selectionStart != n) { aE = a.value.substring(a.selectionStart, a.selectionEnd) } } } } else { if (a.tagName != "INPUT") { if (h.getSelection) { aE = h.getSelection().toString() } else { if (am.getSelection) { aE = am.getSelection() } else { if (am.selection) { aE = am.selection.createRange().text } } } } } if (ah(aE) > 20) { aE = "" } return aE } function R(a) { if (a.which == 27) { E() } } function D() { C.css({ left: az.pageX + "px", top: (az.pageY + 17) + "px" }).show(); X.css({ left: az.pageX + 8 + "px", top: (az.pageY + 8) + "px" }).show() } function g() { C.hide(); X.hide() } function ai(a) { g(); l(); s(I); return false } function l() { if (!ar) { var aD = az.pageX, aE = az.pageY + 10, a = am.body; if ((aD + 332) > ((h.pageXOffset || aa.scrollLeft || a.scrollLeft) + (aa.clientWidth || a.clientWidth))) { aD -= 332; aE += 8 } ac.css({ left: aD + "px", top: aE + "px" }).show() } W = true; if (ay && aj.css("display") == "block") { aA.appendTo(al("dictHcBottom").dom.firstChild); aj.hide() } } function ad() { if (ar) { return } if (W) { ac.hide(); W = false; if (!ay) { aj.append(aA).show() } } } function E(a) { if (a && a.which != 1) { return } ar = false; K.css("background-position", "0 -44px"); g(); ad(); ax(); return false } function A(a) { if (a.which != 1) { return } ar = !ar; K.css("background-position", "0 -" + (ar ? 66 : 44) + "px"); K.attr("title", ar ? unescape("%u5DF2%u9501%u5B9A%u4F4D%u7F6E") : unescape("%u9501%u5B9A%u4F4D%u7F6E")); return false } function ab() { j.attr("style", "border:1px solid #A1D9ED;"); u.attr("checked", ak); F.attr("checked", aq); var a = j.offset(); f.css({ left: a.left + "px", top: (a.top - 48) + "px" }).show(); al("dictHcCntLine").show() } function ax(aD) { clearTimeout(q); var a = al("dictHcCntLine"); if (aD && (aD.relatedTarget == a.dom || aD.relatedTarget == f.dom || aD.relatedTarget == j.dom)) { return } f.hide(); j.attr("style", null) } function y() { ay = !ay; at("dictHcEnable", ay); aA.css("background-position", "3px -" + (ay ? 105 : 127) + "px").html(ay ? unescape("%u5DF2%u5F00%u542F%u5212%u8BCD") : unescape("%u5DF2%u5173%u95ED%u5212%u8BCD")); return false } function J(a) { if (a.target.className === "dictHcBtn1") { return } B = true; var aD = ac.offset(); ae = { x: a.pageX - aD.left, y: a.pageY - aD.top }; Z.show(); ac.attr("class", "dictHcDrag"); return false } function Q(aE) { if (B) { var aD = aE.pageX - ae.x, a = aE.pageY - ae.y; if (aD < 0) { aD = 0 } if (a < 0) { a = 0 } ac.css({ left: aD + "px", top: a + "px" }) } } function k(a) { if (B) { B = false; ac.attr("class", null); Z.hide() } } function v(a) { return a.replace(/^\s+|\s+$/g, "").replace(/\s*\r?\n\s*/g, " ") } function s() { i.attr("src", "https://apii.dict.cn/apis/dict3.php?skin=default&q=" + encodeURIComponent(I) + "#" + (ak ? 1 : 0)) } function b(a) { if (!a) { a = "" } return '

' + a + '

' + unescape("%u6B63%u5728%u52A0%u8F7D%u4E2D...") + "
" } function aB(a) { return al.cookie(a) } function at(a, aD) { al.cookie(a, aD, { expires: 3650, domain: am.domain }) } function af(a) { var aD = al("#" + a); var aE = document.frames ? document.frames[a].document : aD.contentDocument; if (aD != null && aE != null) { aD.height = aE.body.scrollHeight } } function r(aE, a) { var aD = aE.contentWindow.document; aD.open(); aD.write(a); aD.close() } function N(a, aH) { return; var aF = aH, aG = aF("#" + a), aE = aF("[slot]", aG); if (aE.length) { var aD = "https://list.dict.cn/list/slots.php?callback=?&id="; aE.each(function (aI, aJ) { if (aI != 0) { aD += "-" } aD += aF(aJ).attr("slot") }); aF.getJSON(aD, function (aJ) { if (aJ) { var aI = {}; aF.each(aJ, function (aK, aL) { if (!aL.slot) { aL.slot = 0 } if (!aL.type) { aL.type = "" } if (!aL.title) { aL.title = "" } if (!aL.text) { aL.text = "" } if (!aL.src) { aL.src = "" } if (!aL.width) { aL.width = "auto" } if (!aL.height) { aL.height = "auto" } if (!aL.href) { aL.href = "javascript:;" } if (!aL.html) { aL.html = "" } switch (aL.type) { case "text": aL.dom = aF('' + aL.text + ""); break; case "image": aL.dom = aF('' + aL.title + ''); break; case "slide": if (aL.slot) { ! function (aM) { aL.dom = aM.find("li").length ? aM.find("ul").append('
  • ' + aL.title + '
  • ') : aF(''); if (!aI.style) { aI.style = aF('"); aM.before(aI.style) } aI.max = aM.find("li").length - 1; aI.move = aM.find("ul"); if (!aI.interval) { aI.index = 0; aI.distance = aL.width.match(/^\d+/); aI.interval = setInterval(function () { aI.index = aI.index < aI.max ? (aI.index + 1) : 0; aI.move.animate({ left: -(aI.distance * aI.index) }) }, 5000) } }(aF("[slot=" + aL.slot + "]")) } break; case "flash": aL.dom = aF(''); break; case "html": aL.dom = aF(aL.text); break; default: break } if (aL.slot) { aG.show(); aL.slot = aF("[slot=" + aL.slot + "]").addClass("slot").addClass("slot_" + aL.type).css({ width: aL.width, height: aL.height }).empty().append(aL.dom) } }) } }) } } })(window);