Webcam Abetone
Clicca su una webcam per aprirla grande in una nuova scheda.

function initWebcamBlock(root) { if (!root || root.__wbcInited) return; root.__wbcInited = true;

var refreshSeconds = parseInt(root.getAttribute('data-refresh-seconds') || '30', 10); if (!refreshSeconds || refreshSeconds < 5) refreshSeconds = 5; var imgs = Array.prototype.slice.call(root.querySelectorAll('img[data-wbc-src]')); var timeEl = root.querySelector('.wbc-updated time'); var refreshBtn = root.querySelector('[data-wbc-action="refresh"]'); var autoBtn = root.querySelector('[data-wbc-action="toggle-auto"]'); var intervalId = null; function findCard(el) { var cur = el; while (cur && cur !== root) { if (cur.classList && cur.classList.contains('wbc-card')) return cur; cur = cur.parentElement; } return null; } function setLastUpdated() { if (!timeEl) return; var now = new Date(); timeEl.dateTime = now.toISOString(); timeEl.textContent = now.toLocaleTimeString(); } function refreshAll() { imgs.forEach(function (img) { var base = img.getAttribute('data-wbc-src'); if (!base) return; var card = findCard(img); if (card) card.setAttribute('data-wbc-error', '0'); img.src = cacheBust(base); }); setLastUpdated(); } imgs.forEach(function (img) { img.addEventListener('error', function () { var card = findCard(img); if (card) card.setAttribute('data-wbc-error', '1'); }); img.addEventListener('load', function () { var card = findCard(img); if (card) card.setAttribute('data-wbc-error', '0'); }); }); function setAutoUi(isOn) { if (!autoBtn) return; autoBtn.setAttribute('aria-pressed', isOn ? 'true' : 'false'); autoBtn.textContent = isOn ? 'Auto: ON' : 'Auto: OFF'; } function startAuto() { if (intervalId) return; intervalId = window.setInterval(refreshAll, refreshSeconds * 1000); setAutoUi(true); } function stopAuto() { if (!intervalId) return; window.clearInterval(intervalId); intervalId = null; setAutoUi(false); } if (refreshBtn) { refreshBtn.addEventListener('click', function () { refreshAll(); }); } if (autoBtn) { autoBtn.addEventListener('click', function () { if (intervalId) stopAuto(); else startAuto(); }); // default: auto ON setAutoUi(true); } // prima carica + auto ON refreshAll(); if (autoBtn) startAuto(); } function onReady(fn) { if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', fn); else fn(); } onReady(function () { var blocks = document.querySelectorAll('.webcamabetonecioni'); for (var i = 0; i < blocks.length; i++) initWebcamBlock(blocks[i]); }); })();