DETIOBR03 session support

session support on https://deti.obr03.ru/

目前为 2025-02-15 提交的版本。查看 最新版本

// ==UserScript==
// @name         DETIOBR03 session support
// @namespace    https://xn--h1addnar4cwb.xn--p1ai/
// @version      1.0
// @description  session support on https://deti.obr03.ru/
// @author       ESOSH makerBot
// @match        https://deti.obr03.ru/
// @license      MIT 
// ==/UserScript==

(function() {
'use strict';
// Функция для нажатия на кнопку "Загрузить"
function clickLoadButton() {
const loadButton = document.querySelector('#load-journal-btn');
if (loadButton && !loadButton.disabled) {
loadButton.click();
console.log("Кнопка 'Загрузить' нажата");
return true;
} else {
console.error("Кнопка 'Загрузить' не найдена или отключена");
return false;
}
}
// Функция для нажатия на кнопку "Сохранить быстрое редактирование"
function clickQuickEditSaveButton() {
const quickEditSaveButton = document.querySelector('#quick-edit-save-btn');
if (quickEditSaveButton && !quickEditSaveButton.disabled) {
quickEditSaveButton.click();
console.log("Кнопка 'Сохранить быстрое редактирование' нажата");
return true;
} else {
console.error("Кнопка 'Сохранить быстрое редактирование' неактивна или не найдена");
return false;
}
}
// Функция для нажатия на кнопку "Переключить режим быстрого редактирования"
function clickQuickEditSwitchButton() {
const quickEditSwitchButton = document.querySelector('#quick-edit-switch-btn');
if (quickEditSwitchButton && !quickEditSwitchButton.disabled) {
quickEditSwitchButton.click();
console.log("Кнопка 'Переключить режим быстрого редактирования' нажата");
return true;
} else {
console.error("Кнопка 'Переключить режим быстрого редактирования' неактивна или не найдена");
return false;
}
}
// Функция для закрытия модального окна
function closeModalWindow() {
const closeButton = document.querySelector('body > div.modal.fade.ng-scope.ng-isolate-scope.in > div > div > div > div.modal-header > div > div.bootstrap-dialog-close-button > button');
if (closeButton) {
closeButton.click();
console.log("Модальное окно закрыто");
} else {
console.error("Кнопка закрытия модального окна не найдена");
}
}
// Функция для нажатия на кнопку "Сохранить" на странице редактирования
function clickSaveButton() {
const saveButton = document.querySelector('#view > div > div:nth-child(1) > div > div > div.buttons-panel-left > button.btn.btn-primary');
if (saveButton && !saveButton.disabled) {
saveButton.click();
console.log("Кнопка 'Сохранить' нажата");
// Создаем интервал для проверки наличия модального окна каждые 100 миллисекунд
const checkModalInterval = setInterval(() => {
const modalWindow = document.querySelector('body > div.modal.fade.ng-scope.ng-isolate-scope.in > div > div');
if (modalWindow) {
closeModalWindow();
clearInterval(checkModalInterval); // Останавливаем интервал после закрытия окна
}
}, 100);
return true;
} else {
console.error("Кнопка 'Сохранить' не найдена или отключена");
return false;
}
}
// Функция для установки MutationObserver для отслеживания изменения в DOM
function setupMutationObserver() {
const observer = new MutationObserver((mutationsList, observer) => {
for (let mutation of mutationsList) {
if (mutation.type === 'childList') {
const loadingModal = document.querySelector('body > div.modal.fade.ng-scope.ng-isolate-scope.in > div > div');
if (loadingModal) {
// Ждем, пока всплывающее окно исчезнет
const intervalId = setInterval(() => {
if (!document.querySelector('body > div.modal.fade.ng-scope.ng-isolate-scope.in > div > div')) { // Проверяем, исчезло ли всплывающее окно
clearInterval(intervalId);
if (clickLoadButton()) {
clearInterval(intervalId); // Останавливаем интервал после успешного нажатия кнопки
}
}
}, 100);
}
}
}
});
// Начинаем наблюдение за изменениями в DOM
observer.observe(document.body, { childList: true, subtree: true });
}
// Основная функция для выполнения всех действий
function performActions() {
if (window.location.href.startsWith('https://deti.obr03.ru/app/school/journal/edit ')) {
clickSaveButton();
} else {
let loadButtonClicked = clickLoadButton();
if (!loadButtonClicked) {
let quickEditSaveButtonClicked = clickQuickEditSaveButton();
if (!quickEditSaveButtonClicked) {
clickQuickEditSwitchButton();
}
}
}
// Перезапуск таймера
clearInterval(intervalId);
intervalId = setInterval(performActions, interval);
}
// Интервал между нажатиями в миллисекундах (например, каждые 15 минут = 900000 миллисекунд)
const interval = 800000;
// Переменная для хранения ID интервала
let intervalId;
// Установка MutationObserver для отслеживания изменений в выпадающем списке
setupMutationObserver();
// Запускаем первый вызов сразу
intervalId = setInterval(performActions, interval);
})();

QingJ © 2025

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