Greasy Fork

Khan Academy (ES) Pantalla Completa con Botones Comprobar y Seguir Mejorado

Mantiene la pantalla completa al presionar "Seguir" y muestra mensajes correctamente

目前为 2025-04-24 提交的版本。查看 最新版本

// ==UserScript==
// @license mit
// @name         Khan Academy (ES) Pantalla Completa con Botones Comprobar y Seguir Mejorado
// @namespace    http://tampermonkey.net/
// @version      3.3
// @description  Mantiene la pantalla completa al presionar "Seguir" y muestra mensajes correctamente
// @author       EL tols/Tails bonil
// @match        *://es.khanacademy.org/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    let fullscreenCheckButton;
    let fullscreenNextButton;
    let fullscreenButton;
    let responseMessageBox;

    function toggleFullScreen() {
        const quizContainer = document.querySelector('.exercise-chrome-content-for-mobile-zoom');
        if (!quizContainer) {
            console.error("No se encontró el contenedor del cuestionario.");
            return;
        }

        if (!document.fullscreenElement) {
            quizContainer.requestFullscreen().then(() => {
                console.log("Modo pantalla completa activado.");
                adjustStyles(true);
                createCheckButtonInsideQuiz();
                createNextButtonInsideQuiz();
                createResponseMessageBox();
            }).catch(err => {
                console.error("Error al activar pantalla completa:", err);
            });
        } else {
            console.log("Modo pantalla completa sigue activo.");
            adjustStyles(true); // Asegurar que los estilos se mantengan
        }
    }

    function adjustStyles(enable) {
        const quizContainer = document.querySelector('.exercise-chrome-content-for-mobile-zoom');
        if (!quizContainer) return;

        if (enable) {
            quizContainer.style.width = "100vw";
            quizContainer.style.height = "100vh";
            quizContainer.style.position = "fixed";
            quizContainer.style.top = "0";
            quizContainer.style.left = "0";
            quizContainer.style.zIndex = "9999";
            quizContainer.style.backgroundColor = "#fff";
            quizContainer.style.display = "flex";
            quizContainer.style.flexDirection = "column";
            quizContainer.style.alignItems = "center";
            quizContainer.style.justifyContent = "space-between";
            document.body.style.overflow = "hidden";
        } else {
            quizContainer.style = "";
            document.body.style.overflow = "";
        }
    }

    function createCheckButtonInsideQuiz() {
        const quizContainer = document.querySelector('.exercise-chrome-content-for-mobile-zoom');
        if (!quizContainer) return;

        fullscreenCheckButton = document.createElement("button");
        fullscreenCheckButton.innerText = "Comprobar";
        fullscreenCheckButton.style.position = "absolute";
        fullscreenCheckButton.style.bottom = "60px";
        fullscreenCheckButton.style.right = "10px";
        fullscreenCheckButton.style.zIndex = "10000";
        fullscreenCheckButton.style.padding = "10px";
        fullscreenCheckButton.style.backgroundColor = "#28a745";
        fullscreenCheckButton.style.color = "white";
        fullscreenCheckButton.style.border = "none";
        fullscreenCheckButton.style.borderRadius = "5px";
        fullscreenCheckButton.style.cursor = "pointer";
        fullscreenCheckButton.onclick = clickCheckButton;

        quizContainer.appendChild(fullscreenCheckButton);
    }

    function createNextButtonInsideQuiz() {
        const quizContainer = document.querySelector('.exercise-chrome-content-for-mobile-zoom');
        if (!quizContainer) return;

        fullscreenNextButton = document.createElement("button");
        fullscreenNextButton.innerText = "Seguir";
        fullscreenNextButton.style.position = "absolute";
        fullscreenNextButton.style.bottom = "10px";
        fullscreenNextButton.style.right = "10px";
        fullscreenNextButton.style.zIndex = "10000";
        fullscreenNextButton.style.padding = "10px";
        fullscreenNextButton.style.backgroundColor = "#1865f2";
        fullscreenNextButton.style.color = "white";
        fullscreenNextButton.style.border = "none";
        fullscreenNextButton.style.borderRadius = "5px";
        fullscreenNextButton.style.cursor = "pointer";
        fullscreenNextButton.onclick = clickNextButton;

        quizContainer.appendChild(fullscreenNextButton);
    }

    function createResponseMessageBox() {
        responseMessageBox = document.createElement("div");
        responseMessageBox.innerText = "";
        responseMessageBox.style.position = "absolute";
        responseMessageBox.style.bottom = "110px";
        responseMessageBox.style.left = "50%";
        responseMessageBox.style.transform = "translateX(-50%)";
        responseMessageBox.style.zIndex = "10000";
        responseMessageBox.style.padding = "10px";
        responseMessageBox.style.borderRadius = "5px";
        responseMessageBox.style.fontSize = "20px";
        responseMessageBox.style.fontWeight = "bold";
        responseMessageBox.style.display = "none";
        document.body.appendChild(responseMessageBox);
    }

    function clickCheckButton() {
        const realCheckButton = document.querySelector('[data-testid="exercise-check-answer"]');
        if (realCheckButton) {
            realCheckButton.click();

            setTimeout(() => {
                const responseMessage = document.querySelector('._ly8ffo, ._1pskjt1');
                if (responseMessage) {
                    responseMessageBox.innerText = responseMessage.innerText;
                    responseMessageBox.style.display = "block";
                    responseMessageBox.style.backgroundColor = responseMessage.innerText.includes("Lo lograste") ? "#28a745" :
                                                               responseMessage.innerText.includes("Todavía no del todo") ? "#ffcc00" :
                                                               "#dc3545";
                    responseMessageBox.style.color = "white";

                    setTimeout(() => {
                        responseMessageBox.style.display = "none";
                    }, 2000);
                }
            }, 1000);
        }
    }

    function clickNextButton() {
        const realNextButton = document.querySelector('[data-testid="exercise-next-question"]');
        if (realNextButton) {
            realNextButton.click();
            toggleFullScreen(); // Mantiene la pantalla completa activa después de avanzar
        }
    }

    function createFullscreenButton() {
        fullscreenButton = document.createElement("button");
        fullscreenButton.innerText = "Pantalla Completa Cuestionario";
        fullscreenButton.style.position = "fixed";
        fullscreenButton.style.top = "10px";
        fullscreenButton.style.right = "10px";
        fullscreenButton.style.zIndex = "10000";
        fullscreenButton.style.padding = "10px";
        fullscreenButton.style.backgroundColor = "#0071bc";
        fullscreenButton.style.color = "white";
        fullscreenButton.style.border = "none";
        fullscreenButton.style.cursor = "pointer";
        fullscreenButton.onclick = toggleFullScreen;
        document.body.appendChild(fullscreenButton);
    }

    function checkPageLoad() {
        if (document.readyState === "complete") {
            createFullscreenButton();
        } else {
            window.addEventListener("load", createFullscreenButton);
        }
    }

    checkPageLoad(); // Ahora correctamente definido y llamado

})();