// ==UserScript== // @name BISTU教务系统一键评教 // @version 2.0 // @description 在BISTU教务系统评教页面右侧添加一键评教按钮,自动选中所有评教选项 // @author MRZZJ // @match https://jwxt.bistu.edu.cn/jwapp/sys/wspjyyapp/* // @match https://jwxt.bistu.edu.cn/jwapp/sys/wspjyyapp/*default/index.do* // @grant none // @run-at document-end // @unwrap // ==/UserScript== (function() { 'use strict'; // 强制等待页面加载完成(兼容异步加载的页面) function waitForPageLoad(callback) { if (document.readyState === 'complete') { callback(); } else { window.addEventListener('load', callback); } } // 创建按钮的核心函数 function createButton() { // 先检查是否已存在按钮,避免重复创建 if (document.getElementById('onekey-pj-btn')) { return; } // 创建一键评教按钮 const btn = document.createElement('button'); btn.id = 'onekey-pj-btn'; btn.textContent = '一键评教'; // 强化按钮样式(确保肉眼可见) btn.style.cssText = ` position: fixed !important; right: 20px !important; top: 100px !important; z-index: 99999 !important; /* 提高层级,避免被遮挡 */ padding: 15px 25px !important; background-color: #ff4d4f !important; /* 红色更醒目 */ color: white !important; border: none !important; border-radius: 8px !important; font-size: 18px !important; cursor: pointer !important; box-shadow: 0 4px 12px rgba(0,0,0,0.3) !important; transition: all 0.3s !important; opacity: 1 !important; display: block !important; /* 强制显示 */ `; // 鼠标悬停效果 btn.addEventListener('mouseover', () => { btn.style.backgroundColor = '#ff7875 !important'; }); btn.addEventListener('mouseout', () => { btn.style.backgroundColor = '#ff4d4f !important'; }); // 点击事件:执行一键评教逻辑 btn.addEventListener('click', () => { try { const radioGroups = document.querySelectorAll('.bh-radio.bh-radio-group-h'); if (radioGroups.length === 0) { alert('⚠️ 未找到评教选项!\n可能原因:\n1. 还未进入具体评教条目\n2. 页面DOM结构已变更'); return; } let successCount = 0; for (const i of radioGroups) { // 兼容不同的子节点索引(解决childNodes[1]可能为空的问题) const input = i.querySelector('input[type="radio"]') || (i.childNodes[1]?.querySelector('input')); if (input) { input.checked = true; input.dispatchEvent(new Event('change', { bubbles: true })); successCount++; } } alert(`✅ 一键评教完成!\n成功选中 ${successCount} 个评教选项`); } catch (e) { console.error('评教执行出错:', e); alert('❌ 评教执行出错!\n请刷新页面重试,或检查控制台报错'); } }); // 强制添加到body(优先级最高) document.body.appendChild(btn); console.log('✅ 一键评教按钮已创建'); } // 双重保障:先等页面加载,再延迟创建(应对SPA页面) waitForPageLoad(() => { setTimeout(createButton, 1000); // 延迟1秒,确保页面元素加载完成 }); // 额外监听路由变化(适配单页应用) let lastHref = window.location.href; setInterval(() => { if (window.location.href !== lastHref) { lastHref = window.location.href; setTimeout(createButton, 500); // 路由变化后重新创建按钮 } }, 500); })();