PageSourceSearch

https://puc-rio.br/vestibular/js/script-tags.js

js puc-rio.br collected 2026-09-24 08:30:55 UTC 3,707 bytes, 102 lines download raw bytes

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.