您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A Ad-changer
// ==UserScript== // @name ADictionary Blocker // @namespace http://tampermonkey.net/ // @version 0.6 // @description A Ad-changer // @author Thomas Thy Train // @match *://dictionary.cambridge.org/* // @match https://*/* // @grant GM_addStyle // @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js // @grant GM.setValue // @grant GM.getValue // @icon data:image/png;base64,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 // @CrossOrigin("*") // ==/UserScript== // this is from https://dictionary.cambridge.org/external/scripts/dblclick.js?version=5.0.175 function setupExtDoubleClick(websiteUrl, dictionary, showFirstEntry, areaClass, maxAllowedWords, target) { setupDoubleClick(websiteUrl, dictionary, areaClass, maxAllowedWords, target, function(websiteUrl, dictionary, showFirstEntry, lookup) { return websiteUrl + "search/" + (dictionary ? dictionary + "/" : "") + (showFirstEntry ? "direct/" : "") + "?q=" + lookup; }); } function setupDoubleClick(websiteUrl, dictionary, showFirstEntry, areaClass, maxAllowedWords, target, urlCallback) { //warning message for developers if (!websiteUrl || !dictionary) { alert("Please specify required parameters (websiteUrl and dictionary) to setupDoubleClick()") return; } //shows the definition layer var showLayer = function(e) { var translateDictionary = dictionary; var node = e.target || e.srcElement; while (node != null) { var lang = node.getAttribute("dict"); if (lang) { translateDictionary = lang; break; } if (node.parentNode == node.ownerDocument) { break; } node = node.parentNode; } e.preventDefault(); var lookup = getSelectedText(); // original space, but shitty api ont allow lookup = lookup.replace(/[\.\*\?;!()\+,\[:\]<>^_`\[\]{}~\\\/\"\'=]/g, ""); lookup = lookup.replace(/\s+/g, ""); if (lookup != null && lookup.replace("/\s/g", "").length > 0) { //disable the double-click feature if the lookup string //exceeds the maximum number of allowable words if (maxAllowedWords && lookup.split(/[ -]/).length > maxAllowedWords) return; // i give up on showing the meaning //I DID IT!!!!!!! let request = new XMLHttpRequest(); request.open("GET","https://api.dictionaryapi.dev/api/v2/entries/en/"+lookup); request.responseType="json"; // add a popup to show define // word is correct // new,store things let word="<h3 style='font-style:italic;font-weight:bold;'>power by Cambridge Dictionary</h3><h1 id='word_adb_explain'style='font-style:italic;font-weight:bold;'>"+lookup+"</h1>"; // test zone if(!localStorage.getItem('wordlist')){ localStorage.setItem("wordlist",""); } let cur_wl=localStorage.getItem('wordlist').split(":"); //unique cur_wl=Array.from(new Set(cur_wl)); localStorage.setItem("wordlist",cur_wl.join(":")); let color="grey"; if(cur_wl.includes(lookup)){ color="green" } request.onload=()=>{ //localStorage.clear(); request.response[0].meanings.forEach((e)=>{word+="<p>"+e.definitions[0].definition+"</p>";word+="<span style='font-style:italic;opacity:0.5;'>"+e.partOfSpeech+"</span>"}); $("#adb_explain").remove(); $("body").append("<div id='adb_explain'style='position:fixed;background-color:#fff;border:2px solid #000;width:450px;'><button id='delete_block' style='border-radius: 50%;border-width:0px;'>X</button><button id='adb_addword' style='border-radius: 50%;background-color:"+color+";border-width:0px;'>✔</button>"+word+"</div>"); // test end let block=document.querySelector("#adb_explain"); const size=block.getBoundingClientRect(); block.style.left=(1420-size.width).toString()+"px"; block.style.top=(740-size.height).toString()+"px"; $("#delete_block").click(()=>{$("#adb_explain").remove()}); } $("#adb_addword").click((e)=>{ lookup=$("#word_adb_explain").text(); if(cur_wl.includes(lookup)){ $("#adb_addword").css("background-color","grey"); const index=cur_wl.findIndex((e)=>e===lookup); delete cur_wl[index]; localStorage.setItem('wordlist', cur_wl.join(":")); }else{ $("#adb_addword").css("background-color","green"); localStorage.setItem('wordlist', cur_wl.join(":")+":"+lookup); } }); request.send(); //append the layer to the DOM only once // modify this part if ($("#definition_layer").length == 0) { var imageUrl = websiteUrl + "external/images/doubleclick/definition-layer.gif"; $("body").append("<div id='definition_layer' style='position:absolute; cursor:pointer;'><img src='" + imageUrl + "' alt='' title=''/></div>"); //$("body").append("<div id='definition_layer' style='position:absolute; cursor:pointer;'>" + word + "</div>"); } //move the layer at the cursor position $("#definition_layer").map(function() { $(this).css({'left' : e.pageX-30, 'top' : e.pageY-40}); }); //open the definition popup clicking on the layer $("#definition_layer").mouseup(function(e) { e.stopPropagation(); openPopup(lookup, translateDictionary); }); } else { $("#definition_layer").remove(); } }; //opens the definition popup var openPopup = function(lookup, translateDictionary) { var searchUrl; if (urlCallback) searchUrl = urlCallback(websiteUrl, translateDictionary, showFirstEntry, lookup); else searchUrl = websiteUrl + "search/" + (translateDictionary ? translateDictionary + "/" : "") + (showFirstEntry ? "direct/" : "") + "?q=" + lookup; if(lookup.replace(/[a-zA-Z0-9]/g, '')!=""){ searchUrl="https://www.collinsdictionary.com/dictionary/chinese-english/"+lookup; } if (target) { if (target == "self") { window.location.href = searchUrl; return; } var popup = window.open(searchUrl, target, "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=915,height=760,top=300,left=300"); if (popup) popup.focus(); } else { window.open(searchUrl, 'cup_lookup'); } /*window.location.href = searchUrl;*/ }; var area = areaClass ? "." + areaClass : "body"; $(area).mouseup(showLayer); } /* * Cross-browser function to get selected text */ function getSelectedText(){ if(window.getSelection) return window.getSelection().toString(); else if(document.getSelection) return document.getSelection(); else if(document.selection) return document.selection.createRange().text; return ""; } (function() { 'use strict'; //setup clicker dictionary // problem, it only give you the link setupDoubleClick( 'https://dictionary.cambridge.org/', 'english-chinese-traditional', true, null, 5, 'popup' ); let adtype=["iframe","ytd-display-ad-renderer","ins","div"]; let adfinder=["google_ads","aswift","mys-wrapper","midcontentadcontainer"]; // let interval = null; // let hostname = document.location.hostname; //make this the explain page,but not every go ad // new function cleanup() { //if(!localStorage.getItem('wordlist')){ // localStorage.setItem("wordlist","."); //} let request = new XMLHttpRequest(); let word="Loading" try{ let cur_wl=localStorage.getItem('wordlist').split(":").slice(1); let lookup= new String(_.sample(cur_wl)); //let lookup="cat"; request.open("GET","https://api.dictionaryapi.dev/api/v2/entries/en/"+lookup); request.responseType="json"; word="<h6 style='font-style:italic;font-weight:bold;'>power by Dictionary API</h6><h5 style='font-style:italic;font-weight:bold;'>"+lookup+"</h5>"; }catch(err){ let lookup="Loading"; request.open("GET","https://api.dictionaryapi.dev/api/v2/entries/en/"+lookup); request.responseType="json"; word="Loading"; } request.onload=()=>{ request.response[0].meanings.forEach((e)=>{ word+="<p>"+e.definitions[0].definition+"</p>"; word+="<span style='font-style:italic;opacity:0.5;'>"+e.partOfSpeech+"</span>"; }); // clear ad adtype.forEach((i)=>{ try{ document.querySelectorAll(i).forEach((elem)=>{ adfinder.forEach((adid)=>{ if(elem.id.slice(0,adid.length)==adid){ console.log(word); elem.style.overflow="auto"; elem.innerHTML=word; //elem.style.visibility = 'hidden'; //elem.style.width = '1px'; //elem.style.height = '1px'; //elem.style.overflow = 'hidden'; //elem.style.opacity = 0; //elem.remove(); } }); });} catch(err){console.log(err); } } ); } request.send(); document.body.dispatchEvent(new MouseEvent('mousemove')); // modify this part // if(sites[hostname].background) { // document.body.style.background = sites[hostname].background; // document.body.style.overflow = 'scroll'; // document.body.style.position = 'static'; // } } let interval=null; cleanup(); if(interval === null) { interval = window.setInterval(function(){ cleanup(); }, 5000); } })(); //"ytd-display-ad-renderer"