您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Enable text selection and add a button to copy to clipboard the item data on https://online.grupoandres.com/
当前为
// ==UserScript== // @name Enable Text Selection and Copy Data on Grupo Andres // @namespace http://SrGeneroso/ // @version 1.0 // @license MIT // @description Enable text selection and add a button to copy to clipboard the item data on https://online.grupoandres.com/ // @author SrGeneroso // @match https://online.grupoandres.com/* // @grant GM_addStyle // ==/UserScript== (function() { 'use strict'; function modifyPage() { // Add custom styles to enable text selection GM_addStyle('.search-by-two-measures { user-select: text !important; -webkit-user-select: text !important; }'); // Function to extract and copy data function copyData(tableResult, button) { var clipboardData = ''; var brand = tableResult.querySelector('.image-brand')?.querySelector('img')?.getAttribute('title'); var model = tableResult.querySelector('.description')?.querySelector('p')?.textContent.trim(); var properties = tableResult.querySelector('.properties')?.textContent.trim().replace(/\s*\|$/, ''); var price = tableResult.querySelector('.base-price')?.innerText; var stock = tableResult.querySelector('.stock-item')?.textContent.trim(); console.log(`${brand} ${model} | ${properties} | ${stock} | ${price}`.replace(/\s+/g, ' ')) if (brand && model && price && stock) { clipboardData = `${brand} ${model} | ${properties} | ${stock} | ${price}`.replace(/\s+/g, ' ') } // Copy data to clipboard navigator.clipboard.writeText(clipboardData).then(function() { // Change button text after successful copy button.textContent = buttonMsgExecuted; setTimeout(function() { // Reset button text after a brief delay button.textContent = buttonMsgReady; }, 2000); }).catch(function(err) { console.error('Error copying to clipboard:', err); // Change button text after an error button.textContent = buttonMsgError; setTimeout(function() { // Reset button text after a brief delay button.textContent = buttonMsgReady; }, 2000); }); } // Items var tableResults = document.querySelectorAll('.results-body .table-result'); var buttonMsgReady = '📎 Copy to clipboard' var buttonMsgExecuted = '📋 Data copied to clipboard' var buttonMsgError = '💥 Copy failed' tableResults.forEach(function(tableResult) { var existingButton = tableResult.querySelector('.copy-button'); if (!existingButton) { // Create and append the button element var button = document.createElement('button'); button.className = 'copy-button'; button.textContent = buttonMsgReady; // Add click event listener to the button button.addEventListener('click', function() { copyData(tableResult, button); }); tableResult.appendChild(button); } }); } // Wait until the document is fully loaded setTimeout(function() { // Run the script modifyPage(); // Monitor mutations on .results-body var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { modifyPage(); }); }); var results = document.querySelector('.results-body'); if (results) { // Start observing .results-body for childList changes observer.observe(results, { childList: true }); } else { console.error('.results-body element not found.'); } }, 1000); })();