Florida Sports Breaking News

Bookmark This Page Button
Press Ctrl + D to bookmark this page in your browser.
Florida Sports Breaking News

Florida Sports Breaking News

Live headlines for every major pro sports team based in Florida

Jacksonville Jaguars

LIVE
Loading…
Loading latest headlines…
Headlines are aggregated automatically from Google News per team (via a third-party feed proxy) and refresh every 20 minutes while a team is selected. Marco Island & Naples News is not affiliated with the linked publishers or any league — click through for the full story at the original source.
`; lastLeague = team.league; } html += ``; }); teamListEl.innerHTML = html; teamListEl.querySelectorAll('.team-btn').forEach(btn => { btn.addEventListener('click', () => selectTeam(btn.dataset.team)); }); } function renderHeadlines(items){ if(!items || items.length === 0){ headlineListEl.innerHTML = `
No recent headlines found for this team.
`; return; } headlineListEl.innerHTML = items.map(it => `
${escapeHtml(it.title)}
${escapeHtml(it.source)} · ${timeAgo(it.pubDate)}
`).join(''); } async function fetchTeamNews(teamName){ const res = await fetch(buildApiUrl(teamName)); const data = await res.json(); if(data.status !== 'ok' || !Array.isArray(data.items)){ throw new Error('Bad response'); } const seen = new Set(); const items = []; for(const item of data.items){ const { title, source } = splitTitleSource(item.title || ''); if(seen.has(title)) continue; seen.add(title); items.push({ title, source, link: item.link, pubDate: item.pubDate }); if(items.length >= MAX_ITEMS) break; } return items; } async function loadTeam(teamName, force){ teamNameEl.textContent = teamName; if(!force && cache[teamName] && (Date.now() - cache[teamName].fetchedAt) < REFRESH_MS){ renderHeadlines(cache[teamName].items); updatedEl.textContent = 'Updated ' + timeAgo(new Date(cache[teamName].fetchedAt).toISOString().replace('T',' ').slice(0,19)); return; } headlineListEl.innerHTML = `
Loading latest headlines…
`; updatedEl.textContent = 'Loading…'; try{ const items = await fetchTeamNews(teamName); cache[teamName] = { items, fetchedAt: Date.now() }; renderHeadlines(items); updatedEl.textContent = 'Updated just now'; }catch(err){ const team = findTeam(teamName); const queryText = (team && team.query) ? team.query : teamName; headlineListEl.innerHTML = `
Live headlines are temporarily unavailable for this team.
View on Google News →
`; updatedEl.textContent = 'Update failed'; } } function selectTeam(teamName){ currentTeam = teamName; renderTeamList(); loadTeam(teamName, false); if(refreshTimer) clearInterval(refreshTimer); refreshTimer = setInterval(() => loadTeam(currentTeam, true), REFRESH_MS); } refreshBtn.addEventListener('click', () => loadTeam(currentTeam, true)); renderTeamList(); selectTeam(currentTeam);