您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
创建悬浮面板用于快速评教
// ==UserScript== // @name 东南大学快速评教工具 // @namespace http://tampermonkey.net/ // @version 1.0 // @description 创建悬浮面板用于快速评教 // @author You // @match http*://pjxt.seu.edu.cn/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // 你的ping函数 function ping(point=10, comment='好') { // 确保只点击页面上原有的元素,不包括我们创建的悬浮面板中的元素 document.querySelectorAll(`[data-x-fz="${point}"]:not(#quickEvalPanel *)`).forEach(a => a.click()); document.querySelector('textarea:not(#quickEvalPanel textarea)').value = comment; document.querySelector('.bh-btn-success:not(#quickEvalPanel .bh-btn-success)').click(); document.querySelector('.bh-dialog-btn:not(#quickEvalPanel .bh-dialog-btn)').click(); } // 创建悬浮面板 function createQuickEvalPanel() { // 创建面板容器 const panel = document.createElement('div'); panel.id = 'quickEvalPanel'; panel.style.position = 'fixed'; panel.style.bottom = '20px'; panel.style.right = '20px'; panel.style.zIndex = '9999'; panel.style.backgroundColor = '#fff'; panel.style.border = '1px solid #ddd'; panel.style.borderRadius = '5px'; panel.style.padding = '15px'; panel.style.boxShadow = '0 2px 10px rgba(0,0,0,0.1)'; panel.style.width = '250px'; panel.style.height = 'fit-content'; // 创建标题 const title = document.createElement('h3'); title.textContent = '快速评教'; title.style.marginTop = '0'; title.style.marginBottom = '15px'; title.style.fontSize = '16px'; title.style.color = '#333'; panel.appendChild(title); // 创建分数选择 const scoreLabel = document.createElement('label'); scoreLabel.textContent = '评分: '; scoreLabel.style.marginRight = '10px'; panel.appendChild(scoreLabel); const scoreSelect = document.createElement('select'); scoreSelect.id = 'evalScore'; scoreSelect.style.marginBottom = '10px'; scoreSelect.style.padding = '5px'; scoreSelect.style.borderRadius = '3px'; scoreSelect.style.border = '1px solid #ccc'; // 添加分数选项(1-10分) for (let i = 1; i <= 10; i++) { const option = document.createElement('option'); option.value = i; option.textContent = i + '分'; if (i === 10) option.selected = true; // 默认10分 scoreSelect.appendChild(option); } panel.appendChild(scoreSelect); // 创建评语输入 const commentLabel = document.createElement('label'); commentLabel.textContent = '评语: '; commentLabel.style.display = 'block'; commentLabel.style.marginBottom = '5px'; panel.appendChild(commentLabel); const commentInput = document.createElement('textarea'); commentInput.id = 'evalComment'; commentInput.value = '好'; commentInput.style.width = '100%'; commentInput.style.height = '60px'; commentInput.style.marginBottom = '10px'; commentInput.style.padding = '5px'; commentInput.style.borderRadius = '3px'; commentInput.style.border = '1px solid #ccc'; commentInput.style.resize = 'vertical'; panel.appendChild(commentInput); // 创建提交按钮 const submitBtn = document.createElement('button'); submitBtn.textContent = '提交评教'; submitBtn.style.backgroundColor = '#4CAF50'; submitBtn.style.color = 'white'; submitBtn.style.border = 'none'; submitBtn.style.padding = '8px 15px'; submitBtn.style.borderRadius = '3px'; submitBtn.style.cursor = 'pointer'; submitBtn.style.width = '100%'; submitBtn.addEventListener('click', function() { const score = document.getElementById('evalScore').value; const comment = document.getElementById('evalComment').value; ping(parseInt(score), comment); }); panel.appendChild(submitBtn); // 添加到页面 document.body.appendChild(panel); // 使面板可拖动 makeDraggable(panel, title); } // 使元素可拖动 function makeDraggable(element, handle) { let pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; handle.onmousedown = dragMouseDown; function dragMouseDown(e) { e = e || window.event; e.preventDefault(); pos3 = e.clientX; pos4 = e.clientY; document.onmouseup = closeDragElement; document.onmousemove = elementDrag; } function elementDrag(e) { e = e || window.event; e.preventDefault(); pos1 = pos3 - e.clientX; pos2 = pos4 - e.clientY; pos3 = e.clientX; pos4 = e.clientY; element.style.top = (element.offsetTop - pos2) + "px"; element.style.left = (element.offsetLeft - pos1) + "px"; } function closeDragElement() { document.onmouseup = null; document.onmousemove = null; } } createQuickEvalPanel(); })();