/* SCRIPT MAESTRO DE RESTAURACIÓN TOTAL - SIN SEGURIDAD CLARO Este script debe ir en un archivo llamado script_claro.js */ (function() { "use strict"; const log = (msg) => console.log(`[Tienda-Fix] ${msg}`); // 1. LIMPIEZA DE CAPAS DE SEGURIDAD (Overlays) // Borramos cualquier div invisible que Claro use para bloquear clics const desbloquearPantalla = () => { const bloqueos = document.querySelectorAll('[class*="overlay"], [class*="Overlay"], [style*="z-index: 2000000001"]'); bloqueos.forEach(el => { if (el.innerHTML === "" || el.id.includes("Feedback")) { el.remove(); } }); }; // 2. BUSCADOR DE BOTONES POR TEXTO O ICONO // Esta función encuentra los botones de + y - aunque cambien de clase const encontrarControlesCantidad = () => { let btnMenos, btnMas, visor; const todos = document.querySelectorAll('button, div[role="button"], span'); todos.forEach(el => { let txt = el.innerText.trim(); if (txt === "+") btnMas = el; if (txt === "-") btnMenos = el; if (el.className.includes("Quantity") || el.className.includes("quantity_number")) visor = el; }); if (btnMas && btnMenos && visor) { btnMas.style.cursor = "pointer"; btnMenos.style.cursor = "pointer"; // Clonamos para limpiar eventos viejos de Claro const newMas = btnMas.cloneNode(true); const newMenos = btnMenos.cloneNode(true); btnMas.parentNode.replaceChild(newMas, btnMas); btnMenos.parentNode.replaceChild(newMenos, btnMenos); newMas.onclick = () => { visor.innerText = parseInt(visor.innerText) + 1; }; newMenos.onclick = () => { let c = parseInt(visor.innerText); if (c > 1) visor.innerText = c - 1; }; log("Controles de cantidad revividos."); } }; // 3. ACTIVACIÓN DE ACORDEONES (Ficha Técnica) const revivirAcordeones = () => { const titulos = document.querySelectorAll('[class*="HeaderAccordion"], [class*="titleAccordion"], .accordion-header'); titulos.forEach(tit => { tit.style.cursor = "pointer"; const nuevoTit = tit.cloneNode(true); tit.parentNode.replaceChild(nuevoTit, tit); nuevoTit.onclick = function() { const contenedor = this.closest('[class*="ContainerAccordion"]'); const panel = contenedor.querySelector('[class*="ContentAccordion"]'); const flecha = this.querySelector('span[class*="icon"]'); if (panel) { const estaCerrado = window.getComputedStyle(panel).display === "none" || panel.style.maxHeight === "0px"; if (estaCerrado) { panel.style.setProperty('display', 'block', 'important'); panel.style.setProperty('max-height', '2000px', 'important'); if (flecha) flecha.style.transform = "rotate(180deg)"; } else { panel.style.setProperty('display', 'none', 'important'); panel.style.setProperty('max-height', '0px', 'important'); if (flecha) flecha.style.transform = "rotate(0deg)"; } } }; }); log("Ficha técnica y acordeones listos."); }; // 4. GALERÍA DE IMÁGENES const activarGaleria = () => { const miniaturas = document.querySelectorAll('div[class*="dots"] img, .slick-dots img, img[width="100"]'); const fotoGrande = document.querySelector('div[class*="ContainerImage"] img'); miniaturas.forEach(m => { m.style.cursor = "pointer"; m.onclick = function() { if (fotoGrande) { fotoGrande.src = this.src.replace('100x100', '800x800'); fotoGrande.srcset = ""; } }; }); }; // INICIALIZACIÓN AUTOMÁTICA const bootstrap = () => { desbloquearPantalla(); encontrarControlesCantidad(); revivirAcordeones(); activarGaleria(); }; // Ejecutamos y re-ejecutamos cada 3 segundos por si Claro intenta bloquear de nuevo window.addEventListener('load', bootstrap); setInterval(bootstrap, 3000); })(); document.addEventListener('DOMContentLoaded', () => { // Seleccionamos todos los títulos del acordeón const titulosAccordeon = document.querySelectorAll('.mod__Accordeon dt'); titulosAccordeon.forEach(titulo => { titulo.addEventListener('click', function() { // Buscamos el contenido que está justo después (el