您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
ModMenu para khan academy
当前为
- // ==UserScript==
- // @name Krakdemy
- // @grant none
- // @namespace https://greasyfork.org/pt-BR/users/1346771-kinjinho
- // @match https://pt.khanacademy.org/*
- // @license MIT
- // @version 3.0 Remake
- // @author KIN
- // @description ModMenu para khan academy
- // @patch kd12m8a24h15M53
- // ==/UserScript==
- (function () {
- let overlayHTML = ` <link rel="preconnect" href="https://fonts.googleapis.com">
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
- <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
- <div id="box">
- <button class="main" id="accordian">Abrir/Fechar</button>
- <div class="main" id="box2">
- <center><p class="inputans" >📖 Krakdemy 📖</p></center>
- <br>
- <left><section><label id="ansHead">Respostas:</label></section></left>
- <center id="mainCen">
- <section><label id="ansBreak"> </label></section>
- </center>
- <section><label> </label></section>
- <button onclick="location.reload()" class="inputans">Limpar lista</button>
- </div>
- <div class="main" id="box2">
- <center><p class="inputans" >Ajuda</p></center>
- <br>
- <left><section><label id="ansHead">/frac significa que é uma fração</label></section></left>
- <left><section><label id="ansHead">/times geralmente é uma multiplicação</label></section></left>
- </div>
- </div>
- <style>
- #box {
- z-index: 9999;
- position: fixed;
- top: 0;
- right: 0;}
- #box2 {
- padding: 15px;
- margin-bottom: 5px;
- display: grid;
- border-radius: 10px;};
- section {
- display: flex;
- justify-content: space-between;margin:5px;}
- .main {
- background-color: #1E1E1E;
- letter-spacing: 2px;
- border-radius: 5px;
- font-weight: none;
- font-size: 11px;
- font-family: 'Roboto', sans-serif;
- color:#FFFFFF;
- webkit-user-select: all;}
- .pwhite {
- border-bottom:2px solid white;
- }
- #accordian {
- width: 100%;
- border: 0;
- cursor: pointer;
- border-radius: 25px;}
- .inputans {
- border: 0;
- cursor: pointer;
- border-radius: 5px;
- background-color: #F2F2F2;
- color: black;
- font-family: 'Roboto', sans-serif; color: #1e1e1e
- }
- .inputans:hover {
- background-color: #121212;
- color: white;
- }
- .toggleclass {
- text-align: center;
- }
- </style>
- `
- function get(x) { return document.getElementById(x); }
- let overlay = document.createElement("div");
- overlay.innerHTML = overlayHTML;
- document.body.appendChild(overlay);
- let acc = get("accordian"),
- darkToggle = get("darkToggle"),
- ansbutton = get("inputans"),
- ansbutton2 = get("inputans2")
- acc.onclick = function() {
- let panel = get("box2");
- let acc = get("accordian")
- if (panel.style.display == "grid") panel.style.display = "none";
- else { panel.style.display = "grid";}
- }
- 'use strict';
- window.loaded = false;
- class Answer {
- constructor(answer, type) {
- this.body = answer;
- this.type = type;
- }
- get isMultiChoice() {
- return this.type == "multiple_choice";
- }
- get isFreeResponse() {
- return this.type == "free_response";
- }
- get isExpression() {
- return this.type == "expression";
- }
- get isDropdown() {
- return this.type == "dropdown";
- }
- log() {
- const answer = this.body;
- answer.map(ans => {
- if (typeof ans == "string") {
- if (ans.includes("web+graphie")) {
- this.body[this.body.indexOf(ans)] = "";
- this.printImage(ans);
- } else {
- answer[answer.indexOf(ans)] = ans.replaceAll(" ", "");
- }
- }
- });
- }
- }
- const originalFetch = window.fetch;
- window.fetch = function () {
- return originalFetch.apply(this, arguments).then(async (res) => {
- if (res.url.includes("/getAssessmentItem")) {
- const clone = res.clone();
- const json = await clone.json()
- let item, question;
- item = json.data.assessmentItem.item.itemData;
- question = JSON.parse(item).question;
- Object.keys(question.widgets).map(widgetName => {
- switch (widgetName.split(" ")[0]) {
- case "numeric-input":
- return freeResponseAnswerFrom(question).log();
- case "radio":
- return multipleChoiceAnswerFrom(question).log();
- case "expression":
- return expressionAnswerFrom(question).log();
- case "dropdown":
- return dropdownAnswerFrom(question).log();
- }
- });
- }
- if (!window.loaded) {
- console.clear();
- window.loaded = true;
- }
- return res;
- })
- }
- let curAns = 1
- function freeResponseAnswerFrom(question) {
- const answer = Object.values(question.widgets).map((widget) => {
- if (widget.options?.answers) {
- return widget.options.answers.map(answer => {
- if (answer.status == "correct") {
- var parNumCurAns = "parNum" + curAns
- var createPar = document.createElement('section')
- createPar.innerHTML = answer.value
- document.getElementById('ansBreak').append(createPar)
- curAns++
- }
- });
- }
- }).flat().filter((val) => { return val !== undefined; });
- return new Answer(answer, "free_response");
- }
- function multipleChoiceAnswerFrom(question) {
- const answer = Object.values(question.widgets).map((widget) => {
- if (widget.options?.choices) {
- return widget.options.choices.map(choice => {
- if (choice.correct) {
- var parNumCurAns = "parNum" + curAns
- var createPar = document.createElement('section')
- createPar.innerHTML = choice.content
- document.getElementById('ansBreak').append(createPar)
- curAns++
- }
- });
- }
- }).flat().filter((val) => { return val !== undefined; });
- return new Answer(answer, "multiple_choice");
- }
- function expressionAnswerFrom(question) {
- const answer = Object.values(question.widgets).map((widget) => {
- if (widget.options?.answerForms) {
- return widget.options.answerForms.map(answer => {
- if (Object.values(answer).includes("correct")) {
- var parNumCurAns = "parNum" + curAns
- var createPar = document.createElement('section')
- createPar.innerHTML = answer.value
- document.getElementById('ansBreak').append(createPar)
- curAns++
- }
- });
- }
- }).flat();
- return new Answer(answer, "expression");
- }
- function dropdownAnswerFrom(question) {
- const answer = Object.values(question.widgets).map((widget) => {
- if (widget.options?.choices) {
- return widget.options.choices.map(choice => {
- if (choice.correct) {
- var parNumCurAns = "parNum" + curAns
- var createPar = document.createElement('section')
- createPar.innerHTML = choice.content
- document.getElementById('ansBreak').append(createPar)
- curAns++
- }
- });
- }
- }).flat();
- return new Answer(answer, "dropdown");
- }
- })();