您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Dò đáp án đúng...
// ==UserScript== // @name EZ (PRE UPDATE VER) // @namespace http://tampermonkey.net/ // @version 4.7 // @description Dò đáp án đúng... // @author V Quan Người đã test: H Nam, K Ngoc, ... // @match https://lms360.edu.vn/* // @grant none // ==/UserScript== (async function() { 'use strict'; // URL meta.js chứa thông tin cập nhật const updateURL = 'https://update.greasyfork.org/scripts/513239/D%C3%B2%20%C4%90%C3%A1p%20%C3%81n%20LMS%20360%20%28UPDATE%20VER%29.meta.js'; const currentVersion = '4.7'; // Phiên bản hiện tại của script // Gọi hàm kiểm tra cập nhật ngay khi script được chạy await checkForUpdates(); // Hàm kiểm tra cập nhật async function checkForUpdates() { let hasUpdate = false; try { const response = await fetch(updateURL, { headers: { 'Content-Type': 'text/plain' } }); if (!response.ok) throw new Error('Không thể tải thông tin cập nhật'); const data = await response.text(); // Phân tích metadata để tìm phiên bản mới const versionMatch = data.match(/@version\s+([\d.]+)/); if (versionMatch && versionMatch[1]) { const latestVersion = versionMatch[1]; // So sánh phiên bản hiện tại với phiên bản mới hasUpdate = compareVersions(currentVersion, latestVersion); if (hasUpdate) { showNotification(`<strong>Có bản cập nhật mới (v<strong>${latestVersion}</strong>)!</strong>`, 'success', true); } else { showNotification('<strong>Không có cập nhật mới</strong>', 'info', false); } } } catch (error) { console.error('Lỗi khi kiểm tra cập nhật:', error); showNotification('<strong>Lỗi khi kiểm tra cập nhật</strong>', 'error', false); } } // Hàm so sánh phiên bản function compareVersions(current, latest) { const currentParts = current.split('.').map(Number); const latestParts = latest.split('.').map(Number); for (let i = 0; i < Math.max(currentParts.length, latestParts.length); i++) { const curr = currentParts[i] || 0; const latest = latestParts[i] || 0; if (curr < latest) return true; if (curr > latest) return false; } return false; } // Hàm hiển thị thông báo function showNotification(message, type, showOkButton) { const notificationBox = document.createElement('div'); notificationBox.className = 'notification'; notificationBox.style.position = 'fixed'; notificationBox.style.bottom = '70px'; notificationBox.style.left = '-300px'; notificationBox.style.padding = '10px'; notificationBox.style.backgroundColor = 'white'; notificationBox.style.border = '1px solid #ccc'; notificationBox.style.borderRadius = '5px'; notificationBox.style.display = 'flex'; notificationBox.style.alignItems = 'center'; notificationBox.style.boxShadow = '0 2px 10px rgba(0,0,0,0.1)'; notificationBox.style.zIndex = '9999'; notificationBox.style.transition = 'left 0.5s ease, opacity 0.5s ease'; notificationBox.style.opacity = '1'; const icon = document.createElement('div'); icon.className = 'icon'; const notificationText = document.createElement('div'); notificationText.className = 'text'; notificationText.innerHTML = message; // Thay đổi biểu tượng và màu sắc dựa trên loại thông báo if (type === 'success') { icon.innerHTML = '<img src="https://img.icons8.com/ios-filled/50/28a745/checkmark.png" class="icon">'; notificationText.style.color = 'green'; } else if (type === 'error') { icon.innerHTML = '<img src="https://img.icons8.com/ios-filled/50/FF0000/cancel.png" class="icon">'; notificationText.style.color = 'red'; } else if (type === 'info') { icon.innerHTML = '<img src="https://cdn.iconscout.com/icon/free/png-512/free-info-icon-download-in-svg-png-gif-file-formats--information-data-user-interface-pack-icons-1604565.png?f=webp&w=256" width="30" height="30">'; notificationText.style.color = 'blue'; } icon.style.marginRight = '10px'; notificationBox.appendChild(icon); notificationBox.appendChild(notificationText); // Tạo nút "Ok" chỉ khi có bản cập nhật mới if (showOkButton) { const okButton = document.createElement('button'); okButton.textContent = 'Ok'; okButton.style.marginLeft = '10px'; okButton.style.padding = '5px 10px'; okButton.style.border = 'none'; okButton.style.borderRadius = '5px'; okButton.style.backgroundColor = '#28a745'; okButton.style.color = 'white'; okButton.style.cursor = 'pointer'; // Thêm sự kiện click cho nút "Ok" okButton.onclick = () => { window.open('https://update.greasyfork.org/scripts/513239/EZ%20%28PRE%20UPDATE%20VER%29.user.js'); document.body.removeChild(notificationBox); // Đóng thông báo }; notificationBox.appendChild(okButton); } document.body.appendChild(notificationBox); // Hiệu ứng slide vào màn hình setTimeout(() => { notificationBox.style.left = '10px'; }, 100); // Tự động ẩn sau 3 giây setTimeout(() => { notificationBox.style.opacity = '0'; notificationBox.style.left = '-300px'; setTimeout(() => { document.body.removeChild(notificationBox); }, 500); }, 3000); } })(); // Tạo nút để mở cửa sổ nhỏ const button = document.createElement("button"); button.innerHTML = "Open Poe.com"; button.style.position = "fixed"; button.style.bottom = "20px"; button.style.right = "20px"; button.style.padding = "10px 20px"; button.style.backgroundColor = "#007bff"; button.style.color = "#fff"; button.style.border = "none"; button.style.borderRadius = "5px"; button.style.cursor = "pointer"; button.style.zIndex = "9999"; button.onclick = function() { // Mở cửa sổ nhỏ với kích thước 800x600 window.open("https://poe.com/", "Poe", "width=800,height=600"); }; // Thêm nút vào trang document.body.appendChild(button); (function() { 'use strict'; let hasCopied = false; // Biến kiểm tra xem đã dò đáp án chưa let currentQuestion = ""; // Biến để lưu câu hỏi hiện tại let isPanelOpen = true; // Biến kiểm soát mở/đóng bảng let autoCheckEnabled = false; // Biến kiểm soát tự động dò đáp án // Hàm để lấy tên người dùng function getUserName() { const userNameElement = document.querySelector("#root > div > div.gradient-9.fixed.top-0.iw-full.z-full > div.hidden.lg\\:block.iw-full > div > div.grow.flex.justify-between.items-center.ipr-30.ipy-12 > div.flex.items-center.gap-2 > div.relative.nav-user > div.relative > div.flex.flex-column.items-start.justify-content-center.ih-45.ibg-0d6.itext-13.itext-light.ipy-9.ipx-30.rounded-tr-20.rounded-br-20 > span.text-light.font-bold"); // Kiểm tra xem phần tử có chứa chữ không return userNameElement && userNameElement.innerText.trim() ? userNameElement.innerText.trim() : 'Người dùng'; } // Tạo ô thông báo tên const greetingBox = document.createElement('div'); greetingBox.style.position = 'fixed'; greetingBox.style.left = '50%'; // Đặt ở giữa ngang greetingBox.style.bottom = '60px'; // Cách đáy 60px để có chỗ cho ô gradient greetingBox.style.transform = 'translateX(-50%)'; // Giữa theo chiều ngang greetingBox.style.padding = '10px 20px'; // Thêm padding cho ô greetingBox.style.background = 'green'; // Nền màu xanh greetingBox.style.borderRadius = '5px'; greetingBox.style.display = 'flex'; greetingBox.style.alignItems = 'center'; greetingBox.style.boxShadow = '0 2px 10px rgba(0,0,0,0.1)'; greetingBox.style.zIndex = '9999'; greetingBox.style.transition = 'bottom 0.5s ease, opacity 0.5s ease'; // Hiệu ứng cho bottom và opacity greetingBox.style.opacity = '1'; // Thêm nội dung thông báo tên const userName = getUserName(); const greetingText = document.createElement('span'); greetingText.innerHTML = `<strong>Xin chào bạn ${userName}!</strong>`; // Sử dụng thẻ strong để in đậm greetingText.style.color = 'white'; // Màu chữ đen // Thêm phần tử vào ô thông báo tên greetingBox.appendChild(greetingText); // Thêm ô thông báo vào body tên document.body.appendChild(greetingBox); // Hiệu ứng mở đầu: trượt ra setTimeout(() => { greetingBox.style.bottom = '70px'; // Đưa ô vào vị trí hiển thị }, 1000); // Thời gian chờ trước khi mở // Tự động ẩn ô thông báo sau 3 giây setTimeout(() => { greetingBox.style.opacity = '0'; // Giảm độ mờ greetingBox.style.bottom = '-100px'; // Trượt vào setTimeout(() => { document.body.removeChild(greetingBox); }, 500); // Thời gian để ẩn }, 3000); // Tạo ô thông báo thành công const notificationBox = document.createElement('div'); notificationBox.style.position = 'fixed'; notificationBox.style.bottom = '10px'; notificationBox.style.left = '-300px'; // Bắt đầu ngoài màn hình bên trái notificationBox.style.padding = '10px'; notificationBox.style.backgroundColor = 'white'; notificationBox.style.border = '1px solid #ccc'; notificationBox.style.borderRadius = '5px'; notificationBox.style.display = 'flex'; notificationBox.style.alignItems = 'center'; notificationBox.style.boxShadow = '0 2px 10px rgba(0,0,0,0.1)'; notificationBox.style.zIndex = '9999'; notificationBox.style.transition = 'left 0.5s ease, opacity 0.5s ease'; // Hiệu ứng cho left và opacity notificationBox.style.opacity = '1'; // Thêm biểu tượng tick const icon = document.createElement('img'); icon.src = 'https://img.icons8.com/ios-filled/50/28a745/checkmark.png'; icon.style.width = '20px'; icon.style.height = '20px'; icon.style.marginRight = '10px'; // Thêm nội dung thông báo const notificationText = document.createElement('span'); notificationText.innerHTML = `<strong>Tải thành công!</strong>`; notificationText.style.color = 'green'; // Thêm phần tử vào ô thông báo notificationBox.appendChild(icon); notificationBox.appendChild(notificationText); // Thêm ô thông báo vào body document.body.appendChild(notificationBox); // Hiệu ứng mở đầu: trượt vào setTimeout(() => { notificationBox.style.left = '10px'; // Đưa ô vào vị trí hiển thị }, 100); // Tự động ẩn ô thông báo sau 3 giây setTimeout(() => { notificationBox.style.opacity = '0'; // Giảm độ mờ notificationBox.style.left = '-300px'; // Trượt ra setTimeout(() => { document.body.removeChild(notificationBox); }, 500); }, 3000); // Hàm tạo tên ngẫu nhiên với tối đa 10 ký tự function generateRandomName() { const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; let name = ''; for (let i = 0; i < 10; i++) { name += chars.charAt(Math.floor(Math.random() * chars.length)); } return name; } // Lấy tên ngẫu nhiên const nameText = generateRandomName(); // Tạo bảng thông báo const infoBox = document.createElement('div'); infoBox.style.position = 'fixed'; infoBox.style.top = '50px'; infoBox.style.right = '10px'; infoBox.style.padding = '10px'; infoBox.style.backgroundColor = 'white'; infoBox.style.border = '3px solid #003366'; infoBox.style.borderRadius = '10px'; infoBox.style.zIndex = '9999'; infoBox.style.cursor = 'move'; infoBox.style.width = '250px'; // Nút "Đáp án (không thủ công)" const answerButton = document.createElement('button'); answerButton.innerText = 'Đáp án (không thủ công)'; answerButton.style.marginTop = '10px'; answerButton.style.padding = '5px 10px'; answerButton.style.borderRadius = '5px'; answerButton.style.border = '2px solid #003366'; answerButton.style.backgroundColor = 'white'; answerButton.style.cursor = 'pointer'; // Khung hiển thị trung tâm const centerBox = document.createElement('div'); centerBox.style.position = 'fixed'; centerBox.style.top = '50%'; centerBox.style.left = '50%'; centerBox.style.transform = 'translate(-50%, -50%)'; centerBox.style.backgroundColor = 'white'; centerBox.style.border = '3px solid #003366'; centerBox.style.borderRadius = '10px'; centerBox.style.padding = '20px'; centerBox.style.zIndex = '10000'; centerBox.style.display = 'none'; // Nút "Công nghệ" const techButton = document.createElement('button'); techButton.innerText = 'Công nghệ'; techButton.style.marginRight = '10px'; techButton.style.padding = '5px 10px'; techButton.style.borderRadius = '5px'; techButton.style.border = '2px solid #003366'; techButton.style.cursor = 'pointer'; // Nút "KHTN" const khtnButton = document.createElement('button'); khtnButton.innerText = 'KHTN'; khtnButton.style.padding = '5px 10px'; khtnButton.style.borderRadius = '5px'; khtnButton.style.border = '2px solid #003366'; khtnButton.style.cursor = 'pointer'; // Tạo nút đóng (icon nhỏ) hình vuông const closeButton = document.createElement('button'); closeButton.innerHTML = '✕'; // Biểu tượng đóng closeButton.style.position = 'absolute'; closeButton.style.top = '5px'; closeButton.style.right = '5px'; closeButton.style.width = '23px'; // Đặt chiều rộng closeButton.style.height = '23px'; // Đặt chiều cao closeButton.style.borderRadius = '50%'; closeButton.style.border = 'none'; closeButton.style.backgroundColor = 'red'; closeButton.style.color = 'white'; closeButton.style.cursor = 'pointer'; // Xử lý nút "Đáp án (không thủ công)" answerButton.onclick = () => { centerBox.style.display = 'block'; }; // Xử lý nút "Công nghệ" techButton.onclick = () => { const answerBox = document.createElement('div'); answerBox.style.position = 'fixed'; answerBox.style.top = '50%'; answerBox.style.left = '50%'; answerBox.style.transform = 'translate(-50%, -50%)'; answerBox.style.backgroundColor = 'white'; answerBox.style.border = '3px solid #003366'; answerBox.style.borderRadius = '10px'; answerBox.style.padding = '20px'; answerBox.style.zIndex = '10001'; answerBox.innerHTML = ` <h3>ĐÉO CÓ</h3> `; const closeAnswerButton = closeButton.cloneNode(true); closeAnswerButton.onclick = () => { answerBox.remove(); }; answerBox.appendChild(closeAnswerButton); document.body.appendChild(answerBox); }; // Xử lý nút "KHTN" khtnButton.onclick = () => { const answerBox = document.createElement('div'); answerBox.style.position = 'fixed'; answerBox.style.top = '50%'; answerBox.style.left = '50%'; answerBox.style.transform = 'translate(-50%, -50%)'; answerBox.style.backgroundColor = 'white'; answerBox.style.border = '3px solid #003366'; answerBox.style.borderRadius = '10px'; answerBox.style.padding = '20px'; answerBox.style.zIndex = '10001'; answerBox.innerHTML = ` <h3>KHTN đáp án bài mới</h3> <p>Câu nối:</p> <p>+ Vật phản xạ âm tốt: gạch men, cửa kính</p> <p>+ Vật phản xạ âm kém: tấm xốp, thảm len</p> <p>Câu nối:</p> <p>+Hiện tượng sóng âm được đề cập tới trong video là hiện tượng (tiếng vang)</p> `; const closeAnswerButton = closeButton.cloneNode(true); closeAnswerButton.onclick = () => { answerBox.remove(); }; answerBox.appendChild(closeAnswerButton); document.body.appendChild(answerBox); }; // Xử lý nút đóng closeButton.onclick = () => { centerBox.style.display = 'none'; }; // Kéo thả khung trung tâm let isDragging = false; let offsetX = 0; let offsetY = 0; centerBox.onmousedown = (e) => { isDragging = true; offsetX = e.clientX - centerBox.getBoundingClientRect().left; offsetY = e.clientY - centerBox.getBoundingClientRect().top; document.body.style.userSelect = 'none'; }; document.onmousemove = (e) => { if (isDragging) { centerBox.style.left = `${e.clientX - offsetX}px`; centerBox.style.top = `${e.clientY - offsetY}px`; } }; document.onmouseup = () => { isDragging = false; document.body.style.userSelect = ''; }; // Thêm các nút vào khung trung tâm centerBox.appendChild(techButton); centerBox.appendChild(khtnButton); centerBox.appendChild(closeButton); // Thêm vào trang infoBox.appendChild(answerButton); document.body.appendChild(infoBox); document.body.appendChild(centerBox); // Thêm sự kiện cho việc kéo bảng thông báo let isDraggingInfoBox = false; let infoBoxOffsetX, infoBoxOffsetY; infoBox.addEventListener('mousedown', (e) => { isDraggingInfoBox = true; infoBoxOffsetX = e.clientX - infoBox.getBoundingClientRect().left; infoBoxOffsetY = e.clientY - infoBox.getBoundingClientRect().top; document.body.style.userSelect = 'none'; // Ngăn chặn chọn văn bản khi kéo }); document.addEventListener('mousemove', (e) => { if (isDraggingInfoBox) { // Cập nhật vị trí bảng thông báo infoBox.style.left = `${e.clientX - infoBoxOffsetX}px`; infoBox.style.top = `${e.clientY - infoBoxOffsetY}px`; infoBox.style.right = 'auto'; // Bỏ giá trị right để có thể di chuyển tự do } }); document.addEventListener('mouseup', () => { isDraggingInfoBox = false; document.body.style.userSelect = ''; // Cho phép chọn văn bản lại }); // Tạo tiêu đề cho bảng với tên người dùng const titleBar = document.createElement('div'); titleBar.style.fontWeight = 'bold'; titleBar.style.marginBottom = '10px'; titleBar.innerHTML = `Dò Đáp Án (<span style="color: black; font-weight: bold;">${nameText}</span>)`; // Chèn tên ngẫu nhiên màu đen vào // Tạo nút Dò và hiển thị đáp án cạnh nhau const checkButtonContainer = document.createElement('div'); checkButtonContainer.style.display = 'flex'; // Bố trí theo hàng ngang // Nút dò const checkButton = document.createElement('button'); checkButton.innerText = 'Dò'; checkButton.style.marginTop = '10px'; checkButton.style.padding = '5px 10px'; checkButton.style.cursor = 'pointer'; checkButton.style.border = '2px solid #003366'; // Viền màu xanh dương đậm checkButton.style.borderRadius = '5px'; // Bo tròn góc checkButton.style.backgroundColor = 'white'; // Nền trắng checkButton.style.transition = 'border-color 0.3s, background-color 0.3s'; // Hiệu ứng chuyển màu viền và nền // Hàm để đổi màu viền RGB let hue = 0; function changeBorderColor() { hue = (hue + 1) % 360; // Giới hạn giá trị hue từ 0 đến 360 checkButton.style.borderColor = `hsl(${hue}, 100%, 50%)`; // Thiết lập màu viền } // Bắt đầu đổi màu viền liên tục setInterval(changeBorderColor, 100); // Đổi màu viền mỗi 100ms // Thêm hiệu ứng hover cho nút checkButton.onmouseover = () => { checkButton.style.backgroundColor = '#f0f0f0'; // Màu nền khi hover }; checkButton.onmouseout = () => { checkButton.style.backgroundColor = 'white'; // Màu nền lại khi không hover }; // Thêm nút vào document infoBox.appendChild(checkButton); // Giả sử bạn đã tạo infoBox trước đó const answerDisplay = document.createElement('div'); answerDisplay.style.marginLeft = '10px'; // Khoảng cách giữa nút Dò và đáp án answerDisplay.style.fontWeight = 'bold'; answerDisplay.style.color = 'green'; checkButtonContainer.appendChild(checkButton); checkButtonContainer.appendChild(answerDisplay); // Thêm bảng thông báo vào body document.body.appendChild(infoBox); // Tạo nút mở/đóng nằm bên ngoài bảng const externalToggleButton = document.createElement('button'); externalToggleButton.innerText = 'Mở/Đóng Dò Đáp Án'; externalToggleButton.style.position = 'fixed'; externalToggleButton.style.top = '10px'; externalToggleButton.style.right = '10px'; externalToggleButton.style.padding = '5px 10px'; externalToggleButton.style.cursor = 'pointer'; externalToggleButton.style.zIndex = '10000'; externalToggleButton.style.border = '3px solid #003366'; // Viền màu xanh dương đậm externalToggleButton.style.borderRadius = '5px'; // Bo tròn góc cho nút externalToggleButton.style.backgroundColor = 'white'; // Nền trắng cho nút externalToggleButton.style.transition = 'background-color 0.3s'; // Hiệu ứng chuyển màu nền khi hover // Thêm hiệu ứng hover cho nút externalToggleButton.onmouseover = () => { externalToggleButton.style.backgroundColor = '#f0f0f0'; // Màu nền khi hover }; externalToggleButton.onmouseout = () => { externalToggleButton.style.backgroundColor = 'white'; // Màu nền lại khi không hover }; // Cho phép di chuyển nút bằng chuột let isDraggingButton = false; let buttonOffsetX, buttonOffsetY; externalToggleButton.addEventListener('mousedown', (e) => { isDraggingButton = true; buttonOffsetX = e.clientX - externalToggleButton.getBoundingClientRect().left; buttonOffsetY = e.clientY - externalToggleButton.getBoundingClientRect().top; document.body.style.userSelect = 'none'; // Ngăn chặn chọn văn bản khi kéo }); document.addEventListener('mousemove', (e) => { if (isDraggingButton) { // Cập nhật vị trí nút externalToggleButton.style.left = `${e.clientX - buttonOffsetX}px`; externalToggleButton.style.top = `${e.clientY - buttonOffsetY}px`; externalToggleButton.style.right = 'auto'; // Bỏ giá trị right để có thể di chuyển tự do } }); document.addEventListener('mouseup', () => { isDraggingButton = false; document.body.style.userSelect = ''; // Cho phép chọn văn bản lại }); // Thêm nút vào body document.body.appendChild(externalToggleButton); // Tạo checkbox tùy chọn tự động dò đáp án const autoCheckLabel = document.createElement('label'); autoCheckLabel.style.display = 'block'; autoCheckLabel.style.marginTop = '10px'; autoCheckLabel.innerHTML = 'Tự động dò đáp án + AUTO'; // Thêm " + AUTO" const autoCheckBox = document.createElement('input'); autoCheckBox.type = 'checkbox'; autoCheckBox.style.marginLeft = '5px'; autoCheckLabel.appendChild(autoCheckBox); // Hàm kiểm tra câu hỏi hiện tại để reset khi thay đổi function checkCurrentQuestion(iframeDoc) { const questionElement = iframeDoc.querySelector(".h5p-question-content"); if (questionElement) { const newQuestion = questionElement.innerText || ""; // Lấy nội dung câu hỏi hiện tại if (newQuestion !== currentQuestion) { currentQuestion = newQuestion; hasCopied = false; // Reset biến khi câu hỏi thay đổi answerDisplay.innerHTML = ""; // Xóa nội dung hiển thị đáp án } } } function findCorrectAnswer() { const iframe = document.querySelector('iframe'); // Select the first iframe on the page if (!iframe) { answerDisplay.innerHTML = 'Không tìm thấy iframe.'; // If iframe not found, show an error return; } const iframeDoc = iframe.contentDocument || iframe.contentWindow.document; // Access the iframe's content checkCurrentQuestion(iframeDoc); // Check if the question has changed if (hasCopied) return; // Prevent rechecking if the answer has already been found // Function to periodically check for the correct answer function periodicCheck() { let correctAnswer = iframeDoc.querySelector( "body > div > div > div > div.h5p-column-content.h5p-question.h5p-single-choice-set > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct" ); if (!correctAnswer) { // If the correct answer is not found, keep checking with other known paths correctAnswer = iframeDoc.querySelector( "body > div > div > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct" ); } if (!correctAnswer) { correctAnswer = iframeDoc.querySelector( "body > div > div > div.h5p-video-wrapper.h5p-video.hardware-accelerated > div > div > div > div > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct" ); } if (!correctAnswer) { correctAnswer = iframeDoc.querySelector( "body > div > div > div > div.h5p-column-content.h5p-question.h5p-single-choice-set > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct" ); } if (!correctAnswer) { correctAnswer = iframeDoc.querySelector( "body > div > div > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct" ); } if (!correctAnswer) { correctAnswer = iframeDoc.querySelector( "body > div > div > div.h5p-dialog-wrapper.h5p-ie-transparent-background > div > div.h5p-dialog-inner > div > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct" ); } if (!correctAnswer) { correctAnswer = iframeDoc.querySelector( "body > div > div > div.h5p-dialog-wrapper.h5p-ie-transparent-background > div > div.h5p-dialog-inner > div > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct" ); } if (!correctAnswer) { correctAnswer = iframeDoc.querySelector( "body > div > div > div.h5p-dialog-wrapper.h5p-ie-transparent-background > div > div.h5p-dialog-inner > div > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct" ); } if (correctAnswer) { const answerText = correctAnswer.querySelector('.h5p-sc-label, .h5p-true-false-answer.correct')?.innerText || ''; if (autoCheckEnabled) { correctAnswer.click(); // Auto-select the correct answer if the auto-check is enabled } // Check if there's an image associated with the answer const imgElement = correctAnswer.querySelector('img'); if (imgElement) { const imgSrc = imgElement.src; if (imgSrc.startsWith('data:image/svg+xml')) { const svgImage = document.createElement('img'); svgImage.src = imgSrc; svgImage.style.maxWidth = '50px'; // Adjust the max width of the image svgImage.style.marginLeft = '10px'; // Add some margin between the text and image const textNode = document.createTextNode(`Đáp án: ${answerText} - Hình ảnh: `); answerDisplay.appendChild(textNode); answerDisplay.appendChild(svgImage); } else { answerDisplay.innerHTML = `Đáp án: ${answerText} - Ảnh không phải SVG.`; } } else { answerDisplay.innerHTML = `Đáp án: ${answerText}`; // Display the correct answer } hasCopied = true; // Mark as answer found } else { answerDisplay.innerHTML = 'Không tìm thấy đáp án. Tiếp tục dò...'; // Display that it's still searching setTimeout(periodicCheck, 1000); // Retry after 1 second if the answer isn't found } } // Start checking for the correct answer periodically periodicCheck(); } // Khi nhấn nút Dò, thực hiện tìm kiếm đáp án checkButton.onclick = findCorrectAnswer; // Khi nhấn nút mở/đóng bảng externalToggleButton.onclick = function() { isPanelOpen = !isPanelOpen; if (isPanelOpen) { infoBox.style.maxHeight = '500px'; // Mở bảng infoBox.style.opacity = '1'; } else { infoBox.style.maxHeight = '0'; // Đóng bảng infoBox.style.opacity = '0'; } }; // Khi nhấn checkbox tự động dò đáp án autoCheckBox.onchange = function() { autoCheckEnabled = autoCheckBox.checked; // Cập nhật trạng thái tự động dò if (autoCheckEnabled) { // Tự động dò nếu tùy chọn được bật const autoCheckInterval = setInterval(findCorrectAnswer, 1000); // Dò lại sau mỗi giây // Dừng tự động dò khi tắt checkbox autoCheckBox.onchange = function() { autoCheckEnabled = autoCheckBox.checked; // Cập nhật trạng thái tự động dò if (!autoCheckEnabled) { clearInterval(autoCheckInterval); // Dừng việc dò } }; } }; titleBar.onmousedown = function(e) { isDragging = true; offsetX = e.clientX - infoBox.getBoundingClientRect().left; offsetY = e.clientY - infoBox.getBoundingClientRect().top; }; document.onmousemove = function(e) { if (isDragging) { infoBox.style.left = `${e.clientX - offsetX}px`; infoBox.style.top = `${e.clientY - offsetY}px`; } }; document.onmouseup = function() { isDragging = false; }; // Thêm các phần tử vào trang infoBox.appendChild(titleBar); infoBox.appendChild(checkButtonContainer); infoBox.appendChild(autoCheckLabel); document.body.appendChild(infoBox); document.body.appendChild(externalToggleButton); })();