您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Enhance SAT practice viewer functionality
// ==UserScript== // @name SAT tailored practice viewer // @namespace http://tampermonkey.net/ // @version 2024-08-15 // @description Enhance SAT practice viewer functionality // @author You // @match https://mypractice.collegeboard.org/questionbank/tailored // @icon https://www.google.com/s2/favicons?sz=64&domain=collegeboard.org // @grant none // ==/UserScript== (function() { 'use strict'; // Function to add custom styles function GM_addStyle(css) { const style = document.getElementById("GM_addStyleBy8626") || (function() { const style = document.createElement('style'); style.type = 'text/css'; style.id = "GM_addStyleBy8626"; document.head.appendChild(style); return style; })(); const sheet = style.sheet; sheet.insertRule(css, (sheet.rules || sheet.cssRules || []).length); } // Apply custom styles GM_addStyle("#questionbank-header {display:none}"); GM_addStyle("#tailored-review {padding-top: 0px !important; height: 700px !important;}"); GM_addStyle(".review-window {margin: 0 !important; max-width: 100vw !important; height: 700px !important;}"); GM_addStyle("cbw-footer {display:none !important;}"); GM_addStyle("#header {display:none !important;}"); GM_addStyle(".assessment-title {display: flex; flex-direction: row !important;}"); GM_addStyle(".header {height:3vh !important;}"); GM_addStyle(".footer {z-index:999999999 !important; position: absolute !important; width: 100vw !important; justify-content:center !important; background-color: rgba(255, 255, 255, 1); bottom:0 !important; height: 7vh !important;}"); GM_addStyle(".tailored-question-content {height: 85vh !important; padding:20px !important;}"); GM_addStyle(".body {overflow:clip !important; height: 90vh !important}"); GM_addStyle(".cb-checkbox {display:none !important;}"); // Fix the position of the tailored-answer-content GM_addStyle(".tailored-answer-content { position: fixed; right: 0; width: 400px; height: 85vh !important; background-color: white; padding: 20px; box-shadow: none;}"); // Remove outermost scroll bar GM_addStyle("html, body { overflow: hidden !important; }"); // Function to check the "Show me the correct answer and explanation" checkbox function checkAnswerCheckbox() { const checkbox = document.getElementById('apricot_check_11'); if (checkbox && !checkbox.checked) { checkbox.click(); // Simulate a user click to check the checkbox } } // Function to uncheck the "Show me the correct answer and explanation" checkbox function uncheckAnswerCheckbox() { const checkbox = document.getElementById('apricot_check_11'); if (checkbox && checkbox.checked) { checkbox.click(); // Simulate a user click to uncheck the checkbox } } // Function to handle answer choice selection function handleAnswerSelection(event) { event.target.click(); // Simulate the click to select the answer choice setTimeout(checkAnswerCheckbox, 50); // Display the correct answer shortly after } // Function to attach event listeners to answer choices function attachAnswerListeners() { const answerChoices = document.querySelectorAll('.cb-radio input[type="radio"]'); answerChoices.forEach(choice => { choice.addEventListener('click', handleAnswerSelection); }); } // Function to attach event listener to the "Next" button function attachNextButtonListener() { const nextButton = document.querySelector('div.skip-next button.cb-btn.cb-btn-primary[data-cbtrack-comp="apricot-react:button"]'); if (nextButton) { nextButton.addEventListener('click', uncheckAnswerCheckbox); } } // Continuously check for the presence of elements and attach listeners function continuousCheck() { attachAnswerListeners(); attachNextButtonListener(); setTimeout(continuousCheck, 500); // Re-run the check every 500ms } // Run the initial setup when the page loads window.addEventListener('load', continuousCheck); })();