您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
marcar automaticamente a caixa de relação de bens no asiweb, definir formato TXT e inserir vírgula
// ==UserScript== // @name relacao de bens autocheck // @namespace http://tampermonkey.net/ // @version 1.4 // @description marcar automaticamente a caixa de relação de bens no asiweb, definir formato TXT e inserir vírgula // @author ils94 // @match https://asiweb.tre-rn.jus.br/asi/web?action=start&target=com.linkdata.corporativo.relatorios.web.AvailableReportsGateway&shadow=* // @grant none // ==/UserScript== (function() { 'use strict'; let outerInterval; let attempts = 0; const maxAttempts = 60; // Stop after ~30 seconds (60 * 500ms) // Function to find elements by XPath in a document function findElementsByXPath(doc = document) { const checkboxXPath = "/html/body/div[2]/div[3]/form/div[1]/div[2]/div[2]/table/tbody/tr[51]/td[3]/input"; const dropdownXPath = "/html/body/div[2]/div[3]/form/div[1]/div[2]/div[2]/table/tbody/tr[51]/td[4]/select[1]"; const textboxXPath = "/html/body/div[2]/div[3]/form/div[1]/div[2]/div[2]/table/tbody/tr[51]/td[4]/input"; let checkbox = doc.evaluate(checkboxXPath, doc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; let dropdown = doc.evaluate(dropdownXPath, doc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; let textbox = doc.evaluate(textboxXPath, doc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; // Check iframes recursively const iframes = doc.getElementsByTagName('iframe'); for (let iframe of iframes) { try { const iframeDoc = iframe.contentDocument || iframe.contentWindow.document; if (!checkbox) checkbox = iframeDoc.evaluate(checkboxXPath, iframeDoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; if (!dropdown) dropdown = iframeDoc.evaluate(dropdownXPath, iframeDoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; if (!textbox) textbox = iframeDoc.evaluate(textboxXPath, iframeDoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; // Recursively check nested iframes const nested = findElementsByXPath(iframeDoc); if (!checkbox) checkbox = nested.checkbox; if (!dropdown) dropdown = nested.dropdown; if (!textbox) textbox = nested.textbox; } catch (e) { console.log('Error accessing iframe:', iframe.src, e); } } return { checkbox, dropdown, textbox }; } // Function to perform actions function performActions() { attempts++; if (attempts > maxAttempts) { console.log('Max attempts reached. Stopping script.'); clearInterval(outerInterval); return; } const { checkbox, dropdown, textbox } = findElementsByXPath(); console.log('Attempt', attempts, 'Elements found:', { checkbox: !!checkbox, dropdown: !!dropdown, textbox: !!textbox }); if (checkbox && dropdown) { console.log('Checkbox and dropdown found. Performing actions...'); const actionInterval = setInterval(function() { let allDone = true; // Check the checkbox if (!checkbox.checked) { checkbox.checked = true; checkbox.dispatchEvent(new Event('click', { bubbles: true })); checkbox.dispatchEvent(new Event('change', { bubbles: true })); console.log('Checkbox checked:', checkbox); allDone = false; } // Set dropdown to TXT if (dropdown.value !== '.txt') { dropdown.value = '.txt'; dropdown.dispatchEvent(new Event('change', { bubbles: true })); console.log('Dropdown set to TXT:', dropdown); allDone = false; } // Check for textbox (may appear after dropdown change) const updatedTextbox = findElementsByXPath().textbox; if (updatedTextbox && updatedTextbox.value !== ',') { updatedTextbox.value = ','; updatedTextbox.dispatchEvent(new Event('input', { bubbles: true })); updatedTextbox.dispatchEvent(new Event('change', { bubbles: true })); console.log('Comma inputted in textbox:', updatedTextbox); allDone = false; } else if (!updatedTextbox) { console.log('Textbox not yet available. Waiting...'); allDone = false; } // Stop if all actions are complete if (allDone && updatedTextbox) { console.log('All actions completed successfully.'); clearInterval(actionInterval); clearInterval(outerInterval); } }, 200); } else { console.log('Checkbox or dropdown not found. Retrying...'); } } // Use MutationObserver to detect DOM changes const observer = new MutationObserver(function(mutations) { console.log('DOM changed, checking for elements...'); performActions(); }); // Observe the entire document observer.observe(document, { childList: true, subtree: true }); // Start the retry loop outerInterval = setInterval(performActions, 500); // Initial attempt performActions(); })();