场馆预约核销自动刷新并自动打开个人订单,然后在iframe中点击场地核销
// ==UserScript== // @name SJTU场馆后台管理核销自动刷新 // @namespace http://tampermonkey.net/ // @version v2.1 // @description 场馆预约核销自动刷新并自动打开个人订单,然后在iframe中点击场地核销 // @author eternal-echo // @match https://sports.sjtu.edu.cn/index // @icon https://www.google.com/s2/favicons?sz=64&domain=sjtu.edu.cn // @grant none // ==/UserScript== (function() { 'use strict'; console.log('核销自动刷新脚本已加载'); // 尝试点击“个人订单”链接 const tryClickPersonalOrder = () => { const personalOrderLink = document.querySelector('a.menuItem[href="/venue/personal"]'); if (personalOrderLink && personalOrderLink.offsetParent !== null) { console.log('“个人订单”链接可见,正在尝试点击'); personalOrderLink.click(); // 延迟监控iframe加载,确保页面及JavaScript逻辑加载完成 setTimeout(monitorIframeForVerificationButton, 1000); // 增加延迟,等待iframe加载 return true; } else { console.log('未找到“个人订单”链接或链接不可见'); return false; } }; // 监控iframe加载,等待“场地核销”按钮加载完成后点击 const monitorIframeForVerificationButton = () => { const iframe = document.querySelector('.RuoYi_iframe[name="iframe2"]'); if (!iframe) { console.log('未找到指定的iframe,无法设置监控。'); return; } console.log('找到指定的iframe'); // 延时1s后尝试点击“场地核销”按钮 setTimeout(() => { try { iframe.contentDocument.querySelector('#toolbar > a.btn.btn-info.btn-xs').click() } catch (e) { console.error('访问iframe内容失败:', e); } }, 1000); }; // 页面完全加载后执行操作 window.addEventListener('load', function() { console.log('页面已完全加载'); if (!tryClickPersonalOrder()) { // 如果“个人订单”链接不可见,尝试展开父级菜单 const parentMenus = document.querySelectorAll('.fa.arrow'); parentMenus.forEach(menu => menu.click()); setTimeout(tryClickPersonalOrder, 500); // 延迟尝试点击“个人订单”链接 } }); // 设置定时器,29分钟刷新页面 setInterval(function() { console.log('正在刷新页面...'); window.location.reload(); }, 29 * 60 * 1000); })();