// ==UserScript== // @name 规划公示页面调试辅助 (仅供学习) // @namespace // @version 1.6 // @description 尝试绕过前端公示期结束限制 (基于文档逻辑分析) // @author ™の♥ // @match *://zygh.changsha.gov.cn/* // @grant none // @run-at document -start // ==/UserScript== ( function () { 'use strict'; console.log("[调试辅助] 脚本已加载,尝试拦截时间判断逻辑..."); // 方案 A: 重写 layui 的使用逻辑 function overrideLayui() { try { console.log("[调试辅助] 尝试重写 layui 使用逻辑..."); // 保存原始的 layui.use 方法 const originalLayuiUse = window.layui && window.layui.use; if (originalLayuiUse) { window.layui.use = function( callback ) { console.log("[调试辅助] 拦截 layui.use 调用"); originalLayuiUse.call(window.layui, function () { console.log("[调试辅助] layui 模块加载完成"); // 执行原始 回调 if (typeof callback === 'function') { callback(); } // 强制显示内容 setTimeout(() => { forceShowContent(); }, 100); }); }; console.log("[调试辅助] 已重写 layui.use 方法"); } } catch (e) { console.error("[调试辅助] 重写 layui 出错:", e); } } // 方案 B: 直接操作 DOM,强制显示内容 function forceShowContent() { try { console.log("[调试辅助] 开始强制显示内容..."); // 1. 检查模板和视图元素 const templateElement = document.getElementById('template'); const viewElement = document.getElementById('view'); if (templateElement && viewElement) { console.log("[调试辅助] 找到模板和视图元素"); // 2. 直接修改模板内容,移除条件判断 let templateContent = templateElement.innerHTML; console.log("[调试辅助] 原始模板内容:", templateContent); // 3. 尝试直接渲染内容 if (window.layui && window.layui.laytpl) { try { const dataTemplate = { condition: true, end: "2026-03-13 00:00:00", gssjend: "2026-03-05 23:55:00", state: "" }; console.log("[调试辅助] 尝试重新渲染模板"); window.layui.laytpl(templateContent).render(dataTemplate, function(str) { viewElement.innerHTML = str; console.log("[调试辅助] 模板渲染完成"); }); } catch (e) { console.error("[调试辅助] 重新渲染模板出错:", e); } } else { // 如果 layui 不可用,直接显示模板内容 console.log("[调试辅助] layui 不可用,尝试直接显示模板内容"); viewElement.innerHTML = templateContent; } } // 4. 隐藏"公示期已结束"提示 const endNoticeElements = document.querySelectorAll('div, section, article, p, span'); endNoticeElements.forEach(el => { try { if (el.innerText && el.innerText.includes("公示期已结束")) { console.log("[调试辅助] 发现结束提示,尝试隐藏:", el); el.style.display = 'none'; el.style.visibility = 'hidden'; } } catch (e) { // 忽略错误 } }); // 5. 查找并显示被隐藏的内容容器 const contentSelectors = [ '.content', '.main-content', '.article-content', '.detail-content', '. container ', '.article', '.body-content', '.page-content', '#content', '#main-content', '#article-content', '#detail-content', 'div[class*="content"]', 'div[class*="main"]', 'div[class*="article"]' ]; contentSelectors.forEach(selector => { const elements = document.querySelectorAll(selector); elements.forEach(el => { try { if (el.style.display === 'none' || el.style.visibility === 'hidden' || el.style.opacity === '0') { console.log("[调试辅助] 尝试显示内容容器:", el); el.style.display = 'block'; el.style.visibility = 'visible'; el.style.opacity = '1'; } } catch (e) { // 忽略错误 } }); }); // 6. 检查并移除加载状态 const loadingElements = document.querySelectorAll('.loading, .loader, .spinner, [class*="loading"], [class*="loader"], [class*="spinner"]'); loadingElements.forEach(el => { try { console.log("[调试辅助] 发现加载元素,尝试隐藏:", el); el.style.display = 'none'; el.style.visibility = 'hidden'; } catch (e) { // 忽略错误 } }); } catch (e) { console.error("[调试辅助] 强制显示内容出错:", e); } } // 方案 C: 监听页面事件,确保在适当的时机执行 function setupEventListeners() { console.log("[调试辅助] 设置事件监听器..."); // DOMContentLoaded 事件 window.addEventListener('DOMContentLoaded', () => { console.log("[调试辅助] DOM 加载完成,执行初步检测"); forceShowContent(); }); // load 事件 - 只在页面完全加载后执行一次 window.addEventListener('load', () => { console.log("[调试辅助] 页面加载完成,执行最终检测"); forceShowContent(); }); // 定期检查,确保内容显示 setInterval(() => { forceShowContent(); }, 2000); } // 方案 D: 立即执行核心逻辑 function executeCoreLogic() { console.log("[调试辅助] 立即执行核心逻辑..."); overrideLayui(); // 延迟执行 DOM 操作,避免干扰页面加载 setTimeout(() => { forceShowContent(); }, 500); // 再次执行,确保内容显示 setTimeout(() => { forceShowContent(); }, 1500); } // 启动脚本 setupEventListeners(); executeCoreLogic(); })();

本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。