您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在95598智能互动网站的指定元素旁边添加一个打印按钮
当前为
// ==UserScript== // @name 95598智能互动网站打印按钮 // @namespace your-namespace // @version 1.0 // @description 在95598智能互动网站的指定元素旁边添加一个打印按钮 // @match https://www.95598.cn/osgweb/electricityCharge* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // 模拟点击某个元素 function simulateClick(element) { const event = new MouseEvent('click', { bubbles: true, cancelable: true, view: window }); element.dispatchEvent(event); } // 异步函数,用于模拟点击并获取目标元素 async function simulateClickAndGetElement(element, findElement, index) { return new Promise((resolve, reject) => { // 模拟点击 simulateClick(element); // 延时一定时间等待点击事件完成 setTimeout(() => { // 获取具有 class 为 el-table__row expanded 的 tr 元素 const targetTr = findElement.querySelector('tr.el-table__row.expanded'); if (targetTr) { // 获取同级下一个 tr 元素 const nextTr = targetTr.nextElementSibling; if (nextTr) { // 处理下一个 tr 元素 //console.log(nextTr); // 等待点击后的元素出现 const pList = nextTr.querySelector('td > div > div.drop-box-left') // 谷电 const lowEl = pList.querySelector('p:nth-child(1) span.num') const lowNum = lowEl ? lowEl.innerText.trim() : ''; //console.log(lowNum) // 峰电 const highEl = pList.querySelector('p:nth-child(3) span.num') const highNum = highEl ? highEl.innerText.trim() : ''; resolve({highNum, lowNum}); } else { console.log('没有找到下一个 tr 元素',index) resolve({highNum:'0',lowNum:'0'}); } } else { console.log('没有找到满足条件的 tr 元素',index) resolve({highNum:'0',lowNum:'0'}); } }, 100); // 延时0.1秒等待点击事件完成 }); } // 创建打印按钮 const printButton = document.createElement('button'); printButton.innerHTML = '打印'; printButton.style.marginLeft = '10px'; // 打印按钮的点击事件处理程序 printButton.addEventListener('click', async function() { // 获取tbody元素 // #pane-second > div:nth-child(2) > div.about > div.el-table.about-table.trcen.el-table--fit.el-table--enable-row-hover.el-table--enable-row-transition > div.el-table__body-wrapper.is-scrolling-none > table > tbody // #pane-second > div:nth-child(2) > div.about > div.el-table.about-table.trcen.el-table--fit.el-table--enable-row-hover.el-table--enable-row-transition > div.el-table__body-wrapper.is-scrolling-none > table > tbody const tbody = document.querySelector('#pane-second > div:nth-child(2) > div.about > div.el-table.about-table.trcen.el-table--fit.el-table--enable-row-hover.el-table--enable-row-transition > div.el-table__body-wrapper.is-scrolling-none > table > tbody'); if (!tbody) { console.warn("没有找到表格页面,请切换到表格页面") return } // 获取所有tr标签 const trList = tbody.querySelectorAll('tr'); // 定义存储结果的数组 const result = []; for (let i = 0; i < trList.length; i++) { const tr = trList[i]; let date = "" // 获取日期数据 const firstTd = tr.querySelector('td:nth-child(1) div'); if (firstTd) { // 处理第一个td元素 date = firstTd ? firstTd.innerText.trim() : ''; } // 获取电表度数数据 let reading = "" // 获取日期数据 const secondTd = tr.querySelector('td:nth-child(2) div'); if (secondTd) { // 处理第一个td元素 reading = secondTd ? secondTd.innerText.trim() : ''; } const thirdTd = tr.querySelector('td:nth-child(3) div div'); const {lowNum, highNum} = await simulateClickAndGetElement(thirdTd, tbody, i) //console.log(highNum) // 组成对象并添加到结果数组 result.push({ date, reading, lowNum, highNum }); } // 返回结果数组 console.log(result); }); // 获取指定元素 function getTargetElement () { return document.querySelector('#app > div > div.backdrop > div > div.my-row.clears.content-row.cler > div > div > div.el-row > div.el-col.el-col-24.el-col-md-18.el-col-lg-19.el-col-xl-19 > div > div > div > div.right-header > span.title'); } function addPrintBtn (targetEl) { targetEl.parentNode.insertBefore(printButton, targetEl.nextSibling); } console.log("loading") // 等待页面加载完成 function waitForPageLoad() { if (document.readyState === 'complete') { // 页面加载完成后执行查找元素的操作 onMounted(); } else { // 等待下一帧继续检查页面加载状态 requestAnimationFrame(waitForPageLoad); } } function onMounted () { let targetElement = getTargetElement() // 在指定元素的右边添加打印按钮 if (targetElement) { addPrintBtn(targetElement) console.log("add success") } } waitForPageLoad() })();