您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
My to dokazeme !!
// ==UserScript== // @name Projdi ze siti ! // @namespace http://tampermonkey.net/ // @version 0.26 // @description My to dokazeme !! // @author You // @match https://*/* // @match http://*/* // @grant none // ==/UserScript== (function() { const showbar = document.createElement("p"); showbar.style.position = "fixed" showbar.style.top = "70px"; showbar.style.right = "10px" showbar.style.zIndex = "100000000" showbar.style.color="black" showbar.style.background="white" showbar.innerHTML= "ahoj" document.body.appendChild(showbar); showbar.style.display="none"; let barshow = false; document.body.onkeypress = function(event){ var x = event.key; console.log(x); if(x == "f"){ barshow = !barshow; showbar.style.display = barshow ? "block" : "none"; }} let showanswers = ""; // @match https://assessment.netacad.net/virtuoso/delivery/pub-doc/2.0/assessment/* fetch('https://projdi-ze-siti.glitch.me/').then(v => v.json()).then(answers => { console.log(answers) document.addEventListener('click', function(event) { const path = event.composedPath && event.composedPath(); const target = path && path.length > 0 ? path[0] : event.target; // Fallback console.log(target.innerText) const questions = answers.map(v => v.title); //showanswers = answers.filter(({title,ans}) => title === target.innerText).sort()[0] let qindex = findBestMatch(target.innerText,questions).bestMatchIndex showanswers = answers[qindex].ans; showbar.innerHTML = showanswers console.log(showanswers) },true) }) function compareTwoStrings(first, second) { first = first.replace(/\s+/g, '') second = second.replace(/\s+/g, '') if (!first.length && !second.length) return 1; // if both are empty strings if (!first.length || !second.length) return 0; // if only one is empty string if (first === second) return 1; // identical if (first.length === 1 && second.length === 1) return 0; // both are 1-letter strings if (first.length < 2 || second.length < 2) return 0; // if either is a 1-letter string let firstBigrams = new Map(); for (let i = 0; i < first.length - 1; i++) { const bigram = first.substring(i, i + 2); const count = firstBigrams.has(bigram) ? firstBigrams.get(bigram) + 1 : 1; firstBigrams.set(bigram, count); }; let intersectionSize = 0; for (let i = 0; i < second.length - 1; i++) { const bigram = second.substring(i, i + 2); const count = firstBigrams.has(bigram) ? firstBigrams.get(bigram) : 0; if (count > 0) { firstBigrams.set(bigram, count - 1); intersectionSize++; } } return (2.0 * intersectionSize) / (first.length + second.length - 2); } function findBestMatch(mainString, targetStrings) { if (!areArgsValid(mainString, targetStrings)) throw new Error('Bad arguments: First argument should be a string, second should be an array of strings'); const ratings = []; let bestMatchIndex = 0; for (let i = 0; i < targetStrings.length; i++) { const currentTargetString = targetStrings[i]; const currentRating = compareTwoStrings(mainString, currentTargetString) ratings.push({target: currentTargetString, rating: currentRating}) if (currentRating > ratings[bestMatchIndex].rating) { bestMatchIndex = i } } const bestMatch = ratings[bestMatchIndex] return { ratings, bestMatch, bestMatchIndex }; } function areArgsValid(mainString, targetStrings) { if (typeof mainString !== 'string') return false; if (!Array.isArray(targetStrings)) return false; if (!targetStrings.length) return false; if (targetStrings.find(s => typeof s !== 'string')) return false; return true; } // Your code here... })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址