Greasy Fork is available in English.
Добавляет кнопку "Ответы" рядом с количеством введенных ответов.
// ==UserScript== // @name Ответы kompege | КЕГЭ // @namespace https://greasyfork.org/users/843419 // @version 1.1 // @description Добавляет кнопку "Ответы" рядом с количеством введенных ответов. // @author Zgoly // @match https://kompege.ru/variant* // @icon https://www.google.com/s2/favicons?sz=64&domain=kompege.ru // @grant GM_addStyle // @license MIT // ==/UserScript== // Диалоговое окно let modal = document.createElement('dialog') document.body.appendChild(modal) modal.addEventListener('click', (event) => { if (event.target === modal) { modal.close() } }) // Функция для создания кнопки const createButton = (text, action) => { let button = document.createElement('button') button.textContent = text button.className = 'button' button.addEventListener('click', action) return button } // Кнопки let generateAnswersButton = createButton('Открыть страницу с ответами', () => { modal.close() let kimData = JSON.parse(window.localStorage.getItem('kimData')) let newDocument = open().document let newBody = newDocument.body let title = document.createElement('title') title.innerText = document.title + ' Ответы' newBody.appendChild(title) newBody.style.fontFamily = 'sans-serif' let mainTitle = document.createElement('h1') mainTitle.innerText = document.title + ' Ответы' newBody.appendChild(mainTitle) kimData.tasks.forEach(task => { let taskTitle = document.createElement('h2') taskTitle.innerText = 'Задание #' + task.number newBody.appendChild(taskTitle) newBody.innerHTML += task.text let answerTitle = document.createElement('h3') answerTitle.innerText = 'Ответ:' + task.key newBody.appendChild(answerTitle) newBody.appendChild(document.createElement('br')) }) }) let fillAnswersButton = createButton('Заполнить все ответы', () => { modal.close() let kimData = JSON.parse(window.localStorage.getItem('kimData')) kimData.tasks.forEach(task => task.answer = task.key) window.localStorage.setItem('kimData', JSON.stringify(kimData)) window.location.reload() }) let deleteAnswersButton = createButton('Удалить все ответы', () => { modal.close() let kimData = JSON.parse(window.localStorage.getItem('kimData')) kimData.tasks.forEach(task => task.answer = '') window.localStorage.setItem('kimData', JSON.stringify(kimData)) window.location.reload() }) let debugInfoButton = createButton('Отладочная информация', () => { modal.close() console.log(JSON.parse(window.localStorage.getItem('kimData'))) }) // Добавление кнопок в диалоговое окно modal.appendChild(generateAnswersButton) modal.appendChild(fillAnswersButton) modal.appendChild(deleteAnswersButton) modal.appendChild(debugInfoButton) // Наблюдатель за изменениями в DOM let observer = new MutationObserver(() => { let anscount = document.querySelector('.anscount') if (anscount) { observer.disconnect() let button = document.createElement('button') button.innerText = 'Ответы' button.className = 'button' button.addEventListener('click', () => { modal.showModal() }) anscount.parentElement.appendChild(button) } }) observer.observe(document.body, { childList: true, subtree: true }) // Стили GM_addStyle(` .button { background: #1e325a; color: #fff; transition: 0.2s; cursor: pointer; font-size: 16px; padding: 10px; border-radius: 5px; border: none; display: block; margin: 10px auto; } .button:hover { opacity: 0.75; } ` );