1 2// ============== Script PARA O FUNCIONAMENTO DAS TAGS - 22-07-2025 =============== // 3 4function mergeQueryStringToURL(urlDestino) { 5 // Se o navegador suportar URL e URLSearchParams, usa o caminho moderno 6 if (typeof URLSearchParams !== 'undefined' && typeof URL !== 'undefined') { 7 const parametrosAtuais = new URLSearchParams(window.location.search); 8 const url = new URL(urlDestino, window.location.origin); 9 const parametrosDestino = new URLSearchParams(url.search); 10 11 // Copia os parâmetros da URL atual, se não existirem na URL de destino 12 parametrosAtuais.forEach((valor, chave) => { 13 if (!parametrosDestino.has(chave)) { 14 parametrosDestino.set(chave, valor); 15 } 16 }); 17 18 // Reconstrói a URL final com os parâmetros combinados 19 url.search = parametrosDestino.toString(); 20 return url.toString(); 21 } 22 23 // Fallback para navegadores antigos que não suportam URLSearchParams 24 25 // Converte os parâmetros da URL atual em um objeto 26 var buscaAtual = window.location.search.replace(/^\?/, ''); 27 var parametrosAtuais = {}; 28 buscaAtual.split('&').forEach(function(par) { 29 if (!par) return; 30 var partes = par.split('='); 31 var chave = decodeURIComponent(partes[0]); 32 var valor = decodeURIComponent(partes[1] || ''); 33 parametrosAtuais[chave] = valor; 34 }); 35 36 // Separa a URL de destino em base e parâmetros 37 var partesUrl = urlDestino.split('?'); 38 var baseUrl = partesUrl[0]; 39 var parametrosDestino = {}; 40 41 if (partesUrl[1]) { 42 partesUrl[1].split('&').forEach(function(par) { 43 if (!par) return; 44 var partes = par.split('='); 45 var chave = decodeURIComponent(partes[0]); 46 var valor = decodeURIComponent(partes[1] || ''); 47 parametrosDestino[chave] = valor; 48 }); 49 } 50 51 // Adiciona os parâmetros da URL atual, sem sobrescrever os da URL de destino 52 for (var chave in parametrosAtuais) { 53 if (!(chave in parametrosDestino)) { 54 parametrosDestino[chave] = parametrosAtuais[chave]; 55 } 56 } 57 58 // Constrói a nova query string 59 var novaBusca = Object.keys(parametrosDestino).map(function(chave) { 60 return encodeURIComponent(chave) + '=' + encodeURIComponent(parametrosDestino[chave]); 61 }).join('&'); 62 63 // Retorna a URL final combinando a base com os parâmetros 64 return baseUrl + (novaBusca ? '?' + novaBusca : ''); 65} 66 67 68function atualizarLinksVestibularPUC() { 69 // Seleciona todos os elementos <a> com atributo href 70 var links = document.querySelectorAll('a[href]'); 71 72 links.forEach(function(link) { 73 var hrefOriginalAttr = link.getAttribute('href'); //Contem a url conforme definido no campo href 74 var hrefOriginal = link.href; //Contem toda a URL 75 76 // Ignora links vazios, âncoras e chamadas javascript 77 if (!hrefOriginalAttr || hrefOriginalAttr.startsWith('#') || hrefOriginalAttr.startsWith('javascript:')) { 78 return; 79 } 80 81 // Cria um elemento <a> temporário para analisar a URL completa 82 var linkAbsoluto = document.createElement('a'); 83 linkAbsoluto.href = hrefOriginal; 84 85 // Extrai o domÃnio e o caminho da URL 86 var dominio = linkAbsoluto.hostname; 87 var caminho = linkAbsoluto.pathname; 88 89 // Verifica se a URL é para puc-rio.br 90 var ehDominioPUC = dominio.includes('puc-rio.br'); 91 92 // Se for um link válido para o site da puc-rio, aplica o merge de parâmetros 93 if (ehDominioPUC) { 94 var novoHref = mergeQueryStringToURL(hrefOriginal); 95 link.setAttribute('href', novoHref); 96 } 97 }); 98} 99 100 101// Executa automaticamente após o carregamento da página 102document.addEventListener('DOMContentLoaded', atualizarLinksVestibularPUC);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.