您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Pequenina calculadora por peso para o site Atacadao
- // ==UserScript==
- // @name Calculadora Atacadao
- // @license Creative Commons Attribution Non Commercial Share Alike 4.0 International (CC BY-NC-SA 4.0)
- // @namespace Violentmonkey Scripts
- // @include https://www.atacadao.com.br/*
- // @grant none
- // @version 1.0
- // @author Gabriela Perini
- // @description Pequenina calculadora por peso para o site Atacadao
- // ==/UserScript==
- (function () {
- // Wait for the DOM to load
- document.addEventListener("DOMContentLoaded", (function () {
- console.log("DOM fully loaded. Setting up MutationObserver...");
- // Set up a MutationObserver to watch for changes in the DOM
- const observer = new MutationObserver(function (mutations) {
- console.log("MutationObserver callback triggered");
- // Temporarily disconnect the observer to prevent infinite loops
- observer.disconnect();
- // Find all product cards
- const productCards = document.querySelectorAll('[data-product-card-content="true"]');
- // If product cards are found, process them
- if (productCards.length > 0) {
- productCards.forEach(function (card) {
- // Check if the log content has already been added to this card
- if (card.querySelector(".product-log")) {
- return; // Skip if already processed
- console.log("return");
- }
- // Extract the title
- const titleElement = card.querySelector("h3");
- if (titleElement) {
- const title = titleElement.textContent.trim();
- // Extract the quantity and unit from the title
- const quantityMatch = title.replace(/[^\d,]/g, "");
- const quantity = parseFloat((quantityMatch ? quantityMatch : "N/A").replace(",", ".")); // Convert to decimal
- const unit = title.replace(/^\D+/g, "").replace(/[^a-z]/gi, "");
- // Extract the price elements
- if (card.querySelector(".flex.items-center.gap-1"))
- {
- const priceElementSingle = card.querySelector(".text-sm.text-neutral-500.font-bold");
- const priceElementBulk = card.querySelector(".flex.items-center.flex-wrap");
- const priceSingle = parseFloat(
- (priceElementSingle ? priceElementSingle.textContent.trim(): "N/A")
- .replace(/[^\d,]/g, "")
- .replace(",", ".")
- )
- const priceBulk = parseFloat(
- (priceElementBulk ? priceElementBulk.textContent.trim(): "N/A")
- .replace(/[^\d,]/g, "")
- .replace(",", ".")
- )
- console.log("caso1");
- const logMessage = `Varejo ${(priceSingle/quantity).toFixed(2)} por ${unit} Atacado ${(priceBulk/quantity).toFixed(2)} por ${unit}`
- // Log to the console
- console.log(logMessage);
- // Create a container for the log content
- const logContainer = document.createElement("div");
- logContainer.className = "product-log";
- logContainer.style.marginTop = "10px";
- logContainer.style.padding = "5px";
- logContainer.style.backgroundColor = "#f0f0f0";
- logContainer.style.borderRadius = "4px";
- logContainer.style.fontSize = "12px";
- logContainer.style.color = "#333";
- logContainer.textContent = logMessage;
- // Append the log container to the product card
- card.appendChild(logContainer);
- } else {
- const priceElementSingle =card.querySelector(".flex.flex-col.gap-1");
- const priceSingle = parseFloat(
- (priceElementSingle ? priceElementSingle.textContent.trim(): "N/A")
- .replace(/[^\d,]/g, "")
- .replace(",", ".")
- )
- const logMessage = `Varejo ${(priceSingle/quantity).toFixed(2)} por ${unit}`
- // Log to the console
- console.log(logMessage);
- // Create a container for the log content
- const logContainer = document.createElement("div");
- logContainer.className = "product-log";
- logContainer.style.marginTop = "10px";
- logContainer.style.padding = "5px";
- logContainer.style.backgroundColor = "#f0f0f0";
- logContainer.style.borderRadius = "4px";
- logContainer.style.fontSize = "12px";
- logContainer.style.color = "#333";
- logContainer.textContent = logMessage;
- // Append the log container to the product card
- card.appendChild(logContainer);
- }
- ;
- // Create a log message
- ;
- }
- });
- } else {
- console.log("No product cards found yet.");
- }
- // Reconnect the observer after processing
- observer.observe(document.body, { childList: true, subtree: true });
- });
- // Start observing the document body for changes
- console.log("Starting MutationObserver...");
- observer.observe(document.body, { childList: true, subtree: true });
- })());
- })();