Zbavte se únavy a nevyspání za pouhé tři dny. Naplánujte si to tak, abyste začali o víkendu

6. 3. 2025

Sdílet

Mladá žena se s bolestivým výrazem rukou drží za krk
Autor: Depositphotos
Máte to taky tak? Neustálý kolotoč povinností, spousta požadavků ze všech stran. nedostatek odpočinku a kvalitního spánku a k tomu nic moc jídlo a setrvalý stres. Takový způsob života však může mít dlouhodobý dopad na zdraví. Zkuste se z toho vymanit a i přes hektické tempo zvládnout pečovat o své tělo i mysl.

V dnešní hektické době se nedostatek spánku stává problémem sužujícím celou řadu lidí různých věkových kategorií. I když se spánkový deficit už stává téměř běžnou součástí života, všichni, kdo jím trpí, jsou nesmírně unavení. Týká se to více než třetiny lidí, kteří nočním spánkem tráví méně než doporučených sedm až devět hodin.

Co se dozvíte v článku
  1. Jak jíst a pít první den
  2. Co dělat a nedělat v sobotu
  3. Program a jídelníček na neděli
  4. Dopřejte si nedělní odpočinek
  5. V pondělí pokračujte v započatém programu
  6. Začleňte nová pravidla do své každodenní rutiny

Dobrou zprávou je, že se nedostatek spánku dá napravit. Nedávné studie ukázaly, že pouhé tři až čtyři noci s delší dobou spánku mohou vyrovnat spánkový dluh a snížit celkovou míru únavy. Odborníci dokonce vypracovali třídenní plán na znovuzískání ztracené energie.

Jak jíst a pít první den

Nejlepší dobou pro uskutečnění plánu je víkend. I když je páteční večer většinou určený k zábavě, vyhněte se pozdnímu ulehnutí a vydejte se do postele hodinu před půlnocí. Budík si nastavte tak, aby vás vzbudil za 10 až 11 hodin. Podle studie z roku 2016 jedna hodina spánkového dluhu vyžaduje téměř čtyři hodiny spánku pro zotavení.

Den začněte vegetariánským jídlem a přidávejte zeleninu do každého slaného jídla, které budete konzumovat. Odborníci také doporučují v tyto tři dny opustit všechny přísné diety, ale také sladké či vysoce průmyslově zpracované potraviny s mnoha přísadami. Po celý den dbejte na správný pitný režim, protože hydratace pomáhá zlepšit energii i metabolismus. Dokonce i mírná dehydratace totiž může negativně ovlivnit náladu a zvýšit únavu. Pokud to zvládnete, zcela vynechejte alkohol. V opačném případě si dopřejte jen skleničku za den a nejpozději v podvečer.

Vyzkoušíte plán, jak se během 3 dnů zbavit únavy a nevyspání?

Co dělat a nedělat v sobotu

Nekontrolujte svůj e-mail a nedodělávejte pracovní resty, abyste si snížili úroveň stresu a zotavili se z fyzického a emočního vyčerpání. Dopřejte si tělesný pohyb; zkuste chůzi, kratší jízdu na kole nebo cvičení s nízkou intenzitou. Pokud hledáte aktivity, které zvýší vaši srdeční frekvenci o něco více, pak je vhodné kardio cvičení, během kterého můžete konverzovat s přáteli, nebo silový trénink.

Rekonvalescence po covidu: co dělat, když stále trvá únava, bolesti hlavy, svalů či kloubů Přečtěte si také:

Rekonvalescence po covidu: co dělat, když stále trvá únava, bolesti hlavy, svalů či kloubů

Nepřehánějte to však, jen takováto aktivita vám pomůže cítit se během dne lépe, večer rychleji usnout a déle spát. Než to však uděláte, vyčistěte si ložnici. Prostor pro spaní je důležitý. Neuspořádaná místnost může vyvolat stres a úzkost, což samozřejmě není pro klidný spánek ideální. K úklidu patří i pečlivé odstranění prachu, který může snížit kvalitu spánku a způsobit bolesti hlavy, svědění očí nebo škrábání v krku po probuzení.

Nestačí jen otřít nábytek, ale udělejte to i s listy květin, které v ložnici případně máte a dělejte to každý týden. Vysávejte kromě koberců i závěsy a vyčistěte pravidelně také polštáře a matraci. Ke spánku se dnes opět uložte okolo 10. nebo 11. hodiny večer.

Program a jídelníček na neděli

V tento den vstaňte z postele už v 8 hodin. S téměř 10 hodinami spánku v uplynulých dvou nocích byste se již měli cítit lépe, ale neberte to jako znamení úplného zotavení. Výzkumy ukazují, že trvá nejméně tři dny, než se věci vrátí do normálu.

Také dnes se zaměřte na omezení potravin s přidaným cukrem a umělými přísadami, naopak sáhněte po zelenině a celozrnných výrobcích, pochutnejte si na ovoci, semenech a různých druzích ořechů. Dobrou volbou jsou rovněž třeba batáty a potraviny s vysokým obsahem bílkovin.

Udělejte si také jídelníček na další týden, abyste se vyhnuli vynechávání jídel a nezdravým pokrmům. Pokud budete mít čas, vydejte se na nákup potravin pro prvních pár dní a připravte si na pondělí oběd do práce.

Dopřejte si nedělní odpočinek

Vyhněte se pokušení si zdřímnout, mohlo by to narušit vaše vnitřní hodiny. Pokud to přece jenom nemůžete vydržet, docentka neurologie Rachel Salasová z lékařské fakulty na americké Johns Hopkins University doporučuje, abyste si dopřáli krátký spánek na maximálně 20 až 30 minut, a to nejpozději do 15 hodin.

Bolí vás „celý člověk“? Fibromyalgie se projevuje bolestmi i únavou Přečtěte si také:

Bolí vás „celý člověk“? Fibromyalgie se projevuje bolestmi i únavou

Stejně jako v sobotu se protáhněte nebo jděte na procházku. Můžete zkusit také jógu, která vám pomůže zbavit se stresu, zmírnit úzkost, zlepšit náladu a cítit se méně unaveně.

Udělejte si čas na odpočinek a relaxační aktivity, jako je koupel, čtení knihy nebo meditace. Pokud máte stále potíže s usínáním, vytvořte si co nejklidnější prostředí. Podle odborníků mohou ke kvalitnějšímu a hlubšímu spánku pomoci například špunty do uší, zatemňovací závěsy anebo maska na oči. Ulehněte tak, abyste dnes spali 7 až 8 hodin.

Miletínské modlitbičky, hořické trubičky, olomoucké tvarůžky. Co víte o tradičních českých pochoutkách?

Možná jste je někdy ochutnali, možná je znáte jen podle názvu. Řeč je o tradičních českých potravinách a nápojích. Udělejte si test toho, co všechno o nich víte.

V pondělí pokračujte v započatém programu

V závislosti na tom, kdy potřebujete vstát do práce, si naplánujte probuzení. Vstaňte ihned, jakmile budík zazvoní, a neťukejte na tlačítko odložení zvonění. Pokud potřebujete s probuzením a celkovým probráním pomoci, připravte si ranní kávu.

Nevynechávejte snídani a dodržujte jídelníček, který jste si připravili o víkendu. Vyvážená snídaně vám dodá energii na celé dopoledne a v poledne si dopřejte lehčí oběd. Lidé, kteří si dávají k obědu těžší pokrmy, obvykle zakusí výraznější pokles energie v odpoledních hodinách. Vyhněte se tučným jídlům, jako jsou hranolky, smažená jídla anebo smetanová zmrzlina. Studie také zjistily, že jedinci, kteří méně spí, mají tendence jíst kaloričtější jídla.

Kromě práce zkuste dodržovat program z víkendu a do své každodenní rutiny přidejte odpolední procházku nebo cvičení. Tělesná aktivita pomůže snížit únavu i osvěžit mozek.

A co večer? Tzv. cirkadiánní rytmus většiny lidí je nastaven tak, abychom šli spát okolo 11 hodiny večer a probudili se zhruba v 7 hodin ráno. Snažte se zajistit, abyste spali aspoň 7 hodin každou noc. Nejméně hodinu před spaním vynechejte mobily i počítače. Jasné, modře zbarvené světlo z displejů těchto zařízení ztěžuje usínání.

Začleňte nová pravidla do své každodenní rutiny

Když se v úterý probudíte, nezapomeňte, že jste strávili poslední tři dny zotavováním se z únavy a spánkového deficitu. Všechna pravidla se snažte zavést do své každodenní rutiny:

  • Dopřejte si nejméně 7 hodin spánku každou noc,
  • dodržujte vyvážený jídelníček,
  • každý den si zacvičte nebo se projděte,
  • omezte alkohol, kouření i sladké potraviny.

A jak poznáte, že máte dostatek spánku? Probudíte se snadno bez budíku, necítíte se unavení nebo ospalí během dne a nespíte o víkendech déle než ve všední dny. Nezapomínejte, že kofein nebo jiné povzbuzující látky nemohou nahradit tolik potřebný odpočinek.

Pokud se přes všechna nová opatření stále cítíte unavení nebo máte potíže s usínáním a spánkem, je vhodné konzultovat tento problém se svým lékařem.

Zdroje:

Healthline: The 3-Day Fix for Energy

Healthline: The Effects of Sleep Deprivation on Your Body

Medical News Today: What to know about sleep deprivation

National Heart, Lung, and Blood Institute – Nhlbi.nih.gov: What Are Sleep Deprivation and Deficiency?

Chcete mít každé ráno v mailu přehled aktuálních článků z Vitalia.cz? Objednejte si náš mailový servis a žádná důležitá informace vám neuteče. Objednat si lze i týdenní přehled nebo také newsletter To hlavní, páteční souhrn nejdůležitějších článků ze všech našich serverů. Newslettery si můžete objednat na této stránce.

Autor článku

Všeobecné dotazy, připomínky a tipy směřujte na adresu [email protected].

Tiskové zprávy zasílejte na e-mail [email protected].

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).
'; document.getElementById('outstream-iframe').onload = function () { setupIframe(); } replayScreen = document.getElementById('iinfoOutstreamReplay'); iinfoOutstreamPosition = document.getElementById('iinfoOutstreamPosition'); outstreamContainer = document.getElementsByClassName('outstream-container')[0]; setupReplayScreen(); } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if ( location.href.indexOf('rejstriky.finance.cz') !== -1 || location.href.indexOf('finance-rejstrik') !== -1 || location.href.indexOf('firmy.euro.cz') !== -1 || location.href.indexOf('euro-rejstrik') !== -1 || location.href.indexOf('/rejstrik/') !== -1 || location.href.indexOf('/rejstrik-firem/') !== -1) { outstreamDirectPlayed = true; soundAllowed = true; iinfoVastUrlIndex = 0; } if (!outstreamDirectPlayed) { console.log('OUTSTREAM direct'); setUpIMA(true); } else { if (soundAllowed) { const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { console.log('OUTSTREAM sound forbidden'); renderBanner(); }); } } else { renderBanner(); } } } function getWrapper() { let articleWrapper = document.querySelector('.rs-outstream-placeholder'); // Outstream Placeholder from RedSys manipulation if (articleWrapper && articleWrapper.style.display !== 'block') { articleWrapper.innerHTML = ""; articleWrapper.style.display = 'block'; } // Don't render OutStream on homepages if (articleWrapper === null) { if (document.querySelector('body.p-index')) { return null; } } if (articleWrapper === null) { articleWrapper = document.getElementById('iinfo-outstream'); } if (articleWrapper === null) { articleWrapper = document.querySelector('.layout-main__content .detail__article p:nth-of-type(6)'); } if (articleWrapper === null) { // Euro, Autobible, Zdravi articleWrapper = document.querySelector('.o-article .o-article__text p:nth-of-type(6)'); } if (articleWrapper === null) { articleWrapper = document.getElementById('sidebar'); } if (!articleWrapper) { console.error("Outstream wrapper of article was not found."); } return articleWrapper; } function setupDimensions() { outstreamWidth = Math.min(iinfoOutstreamPosition.offsetWidth, 480); outstreamHeight = Math.min(iinfoOutstreamPosition.offsetHeight, 320); } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = directVast; console.log('Outstream DIRECT CAMPAING advert: ' + directVast); videoContent.muted = true; videoContent.volume = 0; outstreamDirectPlayed = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = outstreamWidth; // adsRequest.linearAdSlotHeight = outstreamHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function setupReplayScreen() { replayScreen.addEventListener('click', function () { iinfoOutstreamPosition.remove(); iinfoVastUrlIndex = 0; outstreamInit(); }); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(outstreamWidth, outstreamHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } /** * Handles the ad manager loading and sets ad event listeners. * @param { !google.ima.AdsManagerLoadedEvent } adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } /** * Handles actions taken in response to ad events. * @param { !google.ima.AdEvent } adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: // This is the first event sent for an ad - it is possible to // determine whether the ad is a video ad or an overlay. if (!ad.isLinear()) { // Position AdDisplayContainer correctly for overlay. // Use ad.width and ad.height. videoContent.play(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // This event indicates the ad has started - the video player // can adjust the UI, for example display a pause button and // remaining time. if (ad.isLinear()) { // For a linear ad, a timer can be started to poll for // the remaining time. intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstreamLastError === 303) { if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } break; } } /** * Handles ad errors. * @param { !google.ima.AdErrorEvent } adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstreamLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { renderBanner(); } } function renderBanner() { if (isBanner) { console.log('Outstream: Render Banner'); iinfoOutstreamPosition.innerHTML = ""; iinfoOutstreamPosition.style.height = "330px"; iinfoOutstreamPosition.appendChild(bannerDiv); } else { console.log('Outstream: Banner is not set'); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoOutstreamPosition.remove(); outstreamInit(); } else { return false; } adVolume = 1; return true; } /** * Pauses video content and sets up ad UI. */ function onContentPauseRequested() { videoContent.pause(); // This function is where you should setup UI for showing ads (for example, // display ad timer countdown, disable seeking and more.) // setupUIForAds(); } /** * Resumes video content and removes ad UI. */ function onContentResumeRequested() { videoContent.play(); // This function is where you should ensure that your UI is ready // to play content. It is the responsibility of the Publisher to // implement this function when necessary. // setupUIForContent(); } function onActiveView() { if (outstreamContainer) { const containerOffset = outstreamContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstreamPaused) { adsManager.resume(); outstreamPaused = false; } return true; } else { if (!outstreamPaused) { adsManager.pause(); outstreamPaused = true; } } } return false; } let outstreamInitInterval; if (typeof cpexPackage !== "undefined") { outstreamInitInterval = setInterval(tryToInitializeOutstream, 100); } else { const wrapper = getWrapper(); if (wrapper) { let outstreamInitialized = false; window.addEventListener('scroll', () => { if (!outstreamInitialized) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { outstreamInit(); outstreamInitialized = true; } } }); } } function tryToInitializeOutstream() { const wrapper = getWrapper(); if (wrapper) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstreamInitInterval); outstreamInit(); } } } else { clearInterval(outstreamInitInterval); } } }
OSZAR »