AP Classroom Hide Correct MCQ Answer

3/23/2025, 11:51:22 AM

// ==UserScript==
// @name        AP Classroom Hide Correct MCQ Answer
// @namespace   Violentmonkey Scripts
// @match       *://apclassroom.collegeboard.org/*
// @grant       none
// @version     1.0
// @author      murpyh
// @license     MIT
// @description 3/23/2025, 11:51:22 AM
// ==/UserScript==

const css = `
.mcq-option.--correct ,
.mcq-option.--incorrect
{
  background-color: rgba(255,255,255,1) !important;
  border: 0 !important
}

.response-analysis-wrapper > .icon
{
  display: none;
}

.--chosen
{
  color: inherit !important;
  background-color: inherit !important;
}

.LearnosityDistractor
{
  display: none !important;
}
`;

// taken from https://stackoverflow.com/questions/5525071/how-to-wait-until-an-element-exists
function waitForElm(selector) {
    return new Promise(resolve => {
        if (document.querySelector(selector)) {
            return resolve(document.querySelector(selector));
        }

        const observer = new MutationObserver(mutations => {
            if (document.querySelector(selector)) {
                observer.disconnect();
                resolve(document.querySelector(selector));
            }
        });

        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    });
}

let toggle, style;

function onToggleAnswerShowClicked() {
  if (toggle.checked) {
    style.media = 'all';
  } else {
    style.media = 'not all';
  }
}

function initElements() {
  const head = document.head || document.getElementsByTagName('head')[0];
  style = document.createElement('style');

  head.appendChild(style);
  style.type = 'text/css';
  style.appendChild(document.createTextNode(css));

  toggle = document.createElement('input');
  toggle.type = 'checkbox';
  toggle.name = 'toggleShowAnswer';
  toggle.checked = true;
  toggle.onclick = onToggleAnswerShowClicked;

  const label = document.createElement('label');
  label.for = toggle;
  label.innerHTML = 'Hide correct answer';

  waitForElm('.RI_header').then((header) => {
    header.appendChild(toggle);
    header.appendChild(label);
  });
}

initElements();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址