console.log('accessibility.js loaded'); const appUrl = 'https://app.importflow.ai'; const url = new URL(window.location.href); url.hash = ''; url.search = ''; // Pega a URL do script atual // const scriptUrl = document.currentScript.src; const isProduct = url.pathname.includes('/products/'); // function getOwnerParameter() { // // Cria um objeto URL // const url = new URL(scriptUrl); // // Obtém o parâmetro owner // const owner = url.searchParams.get('owner'); // return owner; // } const getAllElementsWithTitle = () => { const allElements = document.getElementsByTagName('*'); return Array.from(allElements).filter(element => { // Verifica nos atributos const hasAttributeWithTitle = Array.from(element.attributes).some(attr => attr.name.toLowerCase().includes('title') ); // Verifica nas classes usando classList ao invés de className const hasClassWithTitle = element.classList && Array.from(element.classList).some(className => className.toLowerCase().includes('title') ); return hasAttributeWithTitle || hasClassWithTitle; }); }; const replaceAllImages = (newImageUrl) => { const images = document.getElementsByTagName('img'); Array.from(images).forEach(img => { img.src = newImageUrl; // Também atualiza o srcset se existir if(img.srcset) { img.srcset = newImageUrl; } }); }; const disableAllButtons = () => { // Seleciona todos os elementos button const buttons = document.getElementsByTagName('button'); Array.from(buttons).forEach(button => { button.disabled = true; }); // Seleciona também inputs do tipo button/submit const inputButtons = document.querySelectorAll('input[type="button"], input[type="submit"]'); Array.from(inputButtons).forEach(button => { button.disabled = true; }); // Seleciona elementos com a classe 'button' ou role="button" const customButtons = document.querySelectorAll('.button, [role="button"]'); Array.from(customButtons).forEach(button => { button.disabled = true; // Adiciona uma classe para indicar visualmente que está desabilitado button.classList.add('disabled'); // Adiciona atributo aria-disabled para acessibilidade button.setAttribute('aria-disabled', 'true'); }); }; if (isProduct) { const productHandle = url.pathname.split('/').pop(); console.log('handle:', productHandle); const request = new XMLHttpRequest(); request.open('GET', `/products/${productHandle}.json`, true); request.onload = async function () { if (request.status >= 200 && request.status < 400) { const data = JSON.parse(request.responseText); console.log('data:', data); const response = await fetch(`${appUrl}/health?id=${data.product.id}`); const responseData = await response.json(); console.log('responseData:', responseData.errorCode); if (responseData.errorCode === 'REFUNDED_PACKAGE') { console.log('REFUNDED_PACKAGE'); //select all elements with selector 'if-desc' like "

" var elements = document.querySelectorAll('[if-data]'); //delete content of elements with selector 'if-desc' elements.forEach(element => { element.innerHTML = ''; }); //get product title trying by selectors that include "title" const elementsWithTitle = getAllElementsWithTitle(); //delete content of elements elementsWithTitle.forEach(element => { element.innerHTML = `

Produto indisponível no momento

` }); //replace all images with new image setInterval(() => { replaceAllImages('https://pub-aa387af585ca446f9bdb5a957e3405dc.r2.dev/fallback.png'); }, 1000); //disable all buttons disableAllButtons(); } } else { console.log('error:', request.status); } }; request.onerror = function () { console.error("Erro na requisição"); }; // Adiciona o send() para executar a requisição request.send(); }