Spaces:
Running
Running
| // Mapeamento de letras para sites de notícias brasileiros | |
| const newsSites = { | |
| 'A': 'https://www.agorarn.com.br', | |
| 'B': 'https://www.bol.uol.com.br', | |
| 'C': 'https://www.correiobraziliense.com.br', | |
| 'D': 'https://www.diariodepernambuco.com.br', | |
| 'E': 'https://www.estadao.com.br', | |
| 'F': 'https://www.folha.uol.com.br', | |
| 'G': 'https://g1.globo.com', | |
| 'H': 'https://www.hypeness.com.br', | |
| 'I': 'https://www.istoedinheiro.com.br', | |
| 'J': 'https://www.jb.com.br', | |
| 'K': 'https://www.kogut.oglobo.globo.com', | |
| 'L': 'https://www.lance.com.br', | |
| 'M': 'https://www.metropoles.com', | |
| 'N': 'https://www.neofeed.com.br', | |
| 'O': 'https://www.opovo.com.br', | |
| 'P': 'https://www.poder360.com.br', | |
| 'Q': 'https://www.quem.com.br', | |
| 'R': 'https://www.r7.com', | |
| 'S': 'https://www.sbt.com.br/noticias', | |
| 'T': 'https://www.terra.com.br/noticias', | |
| 'U': 'https://www.uol.com.br', | |
| 'V': 'https://veja.abril.com.br', | |
| 'W': 'https://www.wikinews.com.br', | |
| 'X': 'https://www.xinguara.com.br', | |
| 'Y': 'https://www.yahoo.com/noticias', | |
| 'Z': 'https://www.zerozero.pt' | |
| }; | |
| // Elementos DOM | |
| const letterInput = document.getElementById('letterInput'); | |
| const accessBtn = document.getElementById('accessBtn'); | |
| const letterButtons = document.querySelectorAll('.letter-btn'); | |
| // Função para validar e obter a letra | |
| function getValidLetter() { | |
| let letter = letterInput.value.trim().toUpperCase(); | |
| if (!letter || !/[A-Z]/.test(letter)) { | |
| alert('Por favor, digite uma letra válida de A a Z'); | |
| return null; | |
| } | |
| return letter; | |
| } | |
| // Função para acessar o site de notícias | |
| function accessNewsSite(letter) { | |
| const site = newsSites[letter]; | |
| if (site) { | |
| window.open(site, '_blank'); | |
| } else { | |
| alert(`Desculpe, ainda não temos um site mapeado para a letra ${letter}`); | |
| } | |
| } | |
| // Evento do botão principal | |
| accessBtn.addEventListener('click', () => { | |
| const letter = getValidLetter(); | |
| if (letter) { | |
| accessNewsSite(letter); | |
| } | |
| }); | |
| // Evento para pressionar Enter no input | |
| letterInput.addEventListener('keypress', (e) => { | |
| if (e.key === 'Enter') { | |
| const letter = getValidLetter(); | |
| if (letter) { | |
| accessNewsSite(letter); | |
| } | |
| } | |
| }); | |
| // Eventos para os botões de letras | |
| letterButtons.forEach(button => { | |
| button.addEventListener('click', () => { | |
| const letter = button.dataset.letter; | |
| letterInput.value = letter; | |
| accessNewsSite(letter); | |
| }); | |
| }); | |
| // Focar no input ao carregar a página | |
| window.addEventListener('load', () => { | |
| letterInput.focus(); | |
| }); |