Warning: fopen(/www/sites/update.greasyfork.icu/index/store/temp/68ef919428f939d50efe34a4fe6e6c48.js): failed to open stream: No space left on device in /www/sites/update.greasyfork.icu/index/scriptControl.php on line 65
// ==UserScript== // @name 湖南大学CG平台自动选择C++ // @namespace http://tampermonkey.net/ // @version 1.2 // @description 在湖南大学CG平台提交题目前自动选择C++ // @author 淼畔 // @match https://cg.hnu.edu.cn/* // @grant none // @license MIT // @icon https://cg.hnu.edu.cn/images/cgicon.png // @downloadURL https://update.greasyfork.icu/scripts/541304/%E6%B9%96%E5%8D%97%E5%A4%A7%E5%AD%A6CG%E5%B9%B3%E5%8F%B0%E8%87%AA%E5%8A%A8%E9%80%89%E6%8B%A9C%2B%2B.user.js // @updateURL https://update.greasyfork.icu/scripts/541304/%E6%B9%96%E5%8D%97%E5%A4%A7%E5%AD%A6CG%E5%B9%B3%E5%8F%B0%E8%87%AA%E5%8A%A8%E9%80%89%E6%8B%A9C%2B%2B.meta.js // ==/UserScript== (function() { 'use strict'; // 配置参数 const TARGET_LANGUAGE = 'c++'; const MAX_RETRIES = 8; // 增加重试次数 const INITIAL_DELAY = 300; // 初始延迟(毫秒) const RETRY_INTERVAL = 400; // 重试间隔(毫秒) // 静默设置语言的核心函数 function setLanguageSilently(attempt = 0) { try { const languageSelect = document.getElementById('languages') || document.querySelector('select[name="progLanguage"]'); if (languageSelect) { // 检查是否已经是目标语言 if (languageSelect.value === TARGET_LANGUAGE) { return true; } // 设置目标语言 languageSelect.value = TARGET_LANGUAGE; // 触发所有可能的事件 const events = ['change', 'input', 'click']; events.forEach(eventType => { const event = new Event(eventType, { bubbles: true }); languageSelect.dispatchEvent(event); }); // 验证是否设置成功 if (languageSelect.value === TARGET_LANGUAGE) { return true; } } // 重试逻辑 if (attempt < MAX_RETRIES) { setTimeout(() => setLanguageSilently(attempt + 1), RETRY_INTERVAL); } return false; } catch (e) { return false; } } // 初始化函数 function initSilently() { // 初始延迟后执行 setTimeout(() => { // 立即尝试一次 setLanguageSilently(); // 监听DOM变化 const observer = new MutationObserver(() => { setLanguageSilently(); }); observer.observe(document.body, { childList: true, subtree: true }); // 处理SPA路由变化 window.addEventListener('popstate', () => { setTimeout(setLanguageSilently, 100); }); }, INITIAL_DELAY); } // 启动逻辑 if (document.readyState === 'complete') { initSilently(); } else { const onReady = () => { document.removeEventListener('DOMContentLoaded', onReady); window.removeEventListener('load', onReady); initSilently(); }; document.addEventListener('DOMContentLoaded', onReady); window.addEventListener('load', onReady); } })();