Jak na imunitu? Jíst, cvičit, meditovat, milovat

Sdílet

Na to, jak posílit svou imunitu, můžeme najít nespočet tipů. Důležité ovšem je nezačít se všemi najednou a skokově, protože to je pro organismus veliký šok. Pokud jsme pro svou imunitu dělali něco již před karanténou, je vhodné s tím pokračovat, postupně trochu zvýšit intenzitu a pozvolna přidávat další kroky.

Základem je dostatečně jíst ovoce a zeleninu. Společnost pro výživu uvádí množství 600 g zeleniny a ovoce denně, v poměru 2:1. Velmi doporučuji kysanou zeleninu, v Česku tradičně kysané zelí, protože má mnoho blahodárných účinků na naše zdraví. Podíváme se aspoň na některé vhodné potraviny z nich podrobněji.

Co se dozvíte v článku
  1. Co určitě jíst? Kysané zelí
  2. Zázrak klíčení
  3. Voda, světlo, vzduch
  4. I éterické oleje mohou posilovat imunitu
  5. Máme strach? Tělo nám to řekne
  6. Cvičení – skvělá obrana proti stresu
  7. Imunita a vztahy
  8. Relaxační je meditace i háčkování
  9. Dobře se na to vyspat

Co určitě jíst? Kysané zelí

Kysané zelí obsahuje vlákninu, vitamíny C, K, A, sk. B, kys. listovou i minerální látky vápník, draslík, hořčík, fosfor, zinek a mangan.

Díky procesu mléčného kvašení při výrobě obsahuje probiotické bakterie mléčného kvašení, kyselinu mléčnou a enzymy působící stejně jako enzymy slinivky.

Na základě obsahu všech těchto látek můžeme shrnout některé účinky kysaného zelí na naše zdraví: působí antibioticky a protizánětlivě, napomáhá hojení ran, zlepšuje srážlivost krve, snižuje hladinu krevního tuku a cholesterolu, obnovuje poškozenou střevní sliznici, má příznivé účinky na střevní mikroflóru, aktivuje funkci střev a vylučování toxických látek, podporuje pravidelné vyprazdňování, pomáhá udržovat hladinu krevního cukru. Jistě bychom našli i další účinky, ale to by pak již vydalo na samostatný článek.

Galerie: Zdroje probiotických bakterií v potravinách

Zázrak klíčení

Další podobnou „superpotravinou“ nadupanou pro tělo prospěšnými látkami jsou klíčky. Naklíčit můžeme téměř všechny luštěniny a semínka, návodů, jak na to, existuje nespočet.

Klíčky, zvlášť teď na jaře, kdy je jejich přirozený čas, jsou skutečně základem života. To znamená, že obsahují všechny nutrienty, vitamíny i minerální látky nezbytné pro to, aby z nich mohla vyrůst zdravá a silná rostlina. Lidské tělo z nich může využít zejména antioxidanty, enzymy, vitamíny skupin B, C, A, E, D, K, minerální látky, jako je vápník, fosfor, železo, hořčík, a aminokyseliny, které jsou stavebními kameny pro obnovu a tvorbu nových tkání. Tento výčet není kompletní, protože obsah těchto látek se liší podle druhu rostliny, kterou se rozhodneme naklíčit.

Pokud se luštěninám vyhýbáme kvůli potížím s nadýmáním, klíčky jsou pro nás ideálním řešením. Při procesu klíčení se totiž rozštěpí látky způsobující vznik plynů a tato jejich „schopnost“ mizí. Můžeme využít dobu, kdy jsme díky karanténě více doma a můžeme si jejich pěstování natrénovat. Sledovat jejich růst bude bavit určitě i děti a zároveň jim můžete názorně ukázat, co se na jaře děje v přírodě.

A pokud děti nemáme, není nic relaxačnějšího než s údivem pozorovat, jak se z tak malinkatého semínka probouzí život, který v něm celou dobu spal. Přidali jsme jen vodu a světlo.

Voda, světlo, vzduch

Což mi připomíná, že na dostatek vody a světla bychom neměli zapomínat ani u sebe! Možná se budou dít divy.

Pobytu na čerstvém vzduchu se nám během karantény tolik nedostává, takže doporučuji co nejvíce větrat. Ideální je častější krátké intenzivní vyvětrání – vyměníme vzduch, ale nesedíme v neustálém průvanu.

Jakmile začne být venku tepleji, můžeme dobu s otevřeným oknem prodlužovat a užívat si lázeň čerstvého vzduchu.

I éterické oleje mohou posilovat imunitu

Zároveň můžete pročišťovat vzduch různými éterickými oleji. Nám se nejvíce osvědčila na míru míchaná směs pro naše terapeutické centrum. Mezi hlavními složkami je levandule a bergamot pro svou očistnou a nezapomenutelnou vůni.

Nejraději máme kvalitní oleje z ekologického zemědělství. Skvěle nám vyhovuje například značka Oshadhi a nebo Nobilis Tilia, se kterými děláme i aromaterapeutické masáže, které si v tuto chvíli můžete udělat i doma.

Protože éterické oleje mohou posílit imunitu i svými známými účinky – vzpomeňme například na tea tree olej. Ten se v dnešní době vyskytuje v nejedné domácí lékárničce. (Podrobněji se aktuálnímu využití olejů a aromaterapie věnujeme v článku Antivirová aktivita esenciálních olejů.)

Máme strach? Tělo nám to řekne

Během náročných období, kdy prožíváme například obavy o blízké nebo se na nás valí špatné zprávy, je důležité věnovat se i míře svého stresu, strachů a úzkosti. Nemáme sice žádný měřák, který by nám řekl, jestli ve stresu jsme, nebo naopak ještě ne. Ale když se na chvilku zastavíme a zaměříme svou pozornost na své tělo, můžeme vnímat, co v něm děje.

Pocítíme, jestli je někde v napětí, jestli nám nepříjemně rychle buší srdce, jestli se nám třeba potí dlaně, i když nám není horko. Dáme si tak prostor uvědomit si, jak se vlastně cítíme, a ne jen přemýšlet, jestli máme dostatečnou zásobu těstovin.

Při stresu se do organismu vylučují hormony, které nás fyzicky mají připravit na nebezpečí – reakci „bojuj, nebo uteč“. Hlavním hormonem této reakce je adrenalin. Je to hormon krátkodobého stresu, který nám zvýší tep, krevní tlak a zrychlí metabolismus. Rychle se vyplaví a relativně rychle tělo i opustí. Potřebujeme ho k tomu, aby zaktivoval naše tělo k „boji či útěku“, protože v boji i útěku potřebuje rychlé svaly, bleskurychlé reakce a okamžité vyhodnocování situace. Jeho účinky každý známe ze situací, kdy jsme „vytočení do běla“.

Pokud ale stres přetrvává a přejde v tzv. dlouhodobý chronický stres, objevuje se hormon kortizol. Ten na naše tělo působí tak, že zvyšuje krevní tlak, snižuje metabolismus, zvyšuje ukládání tukových zásob, zvyšuje chutě na sladké a tučné potraviny a zároveň snižuje imunitu. Připravuje naše tělo v podstatě na dlouhodobé nebezpečí a schraňuje energii potřebnou pro očekávaný „boj nebo útěk“, kdy ji využije adrenalin. Při dlouhodobém zvýšení hladiny kortizolu se mohou rozvinout onemocnění jako diabetes, metabolický syndrom či různé potíže způsobené sníženou imunitou. Naopak občasný krátkodobý stres vyplavující adrenalin tělu neubližuje, ale spíše jej aktivizuje. (Stres nás chránil před medvědem. Dnes vede k syndromu vyhoření, říká psychiatr Radek Ptáček.)

Cvičení – skvělá obrana proti stresu

Teď již víme, co stres tělu způsobuje a proč je tak nezbytné hladinu dlouhodobého stresu snižovat. A v tuto chvíli přichází na řadu cvičení.

Během koronavirové nouzové situace (stejně jako při jakémkoliv jiném dlouhodobém stresu) je naprosto zásadní, abychom se více než kdy jindy věnovali cvičení i doma. Každému samozřejmě vyhovuje jiná forma cvičení. Ale důležité je, že pohybem se snižuje produkce kortizolu. Nejnižší hladiny dosáhneme po patnácti až dvaceti minutách cvičení. Po pětadvaceti až třiceti minutách cvičení ale začne narůstat zpět (delší cvičení je pro tělo formou stresu). Zároveň se cvičením zvýší produkce dopaminu (cca po třiceti minutách) a endorfinů. To jsou hormony, které zlepšují náladu a působí v mozku na centrum odměny, čímž způsobují uspokojení (podobně jako návykové látky). Dobrá nálada nám snižuje hladinu stresu.

Shrňme si tedy, jaká pozitiva nám cvičení přináší. Přibližně dvacet až třicet minut cvičení nám zlepší náladu, sníží produkci kortizolu a významně sníží hladinu dlouhodobého stresu. A to je přesně to, co potřebujeme.

Volíme cvičení, které nás baví (když budeme cvičit s odporem, hormonům se pracuje mnohem hůře). Pokud si zároveň chceme udržet formu, trochu posílit či se protáhnout nebo rozproudit kardiovaskulární systém, volíme druh cvičení podle našich požadavků. Inspirovat se můžete na našem YouTube. Zároveň doporučuji vybrat si takové cvičení, při kterém se opravdu soustředíme na provedení cviků, dýchání či poslech naší oblíbené hudby a na chvilku se „odpojíme“ od starostí, které se na nás valí ze všech stran. Zdánlivě to tak nevypadá, ale náš imunitní systém nám za to poděkuje.

Imunita a vztahy

Podle výzkumů Gottman Institute v USA jsou pro zlepšení stavu imunity důležité vztahy s ostatními lidmi. Podle studie, jejímiž autory jsou Lois Verbrugge a James House z University of Michigan, nespokojené manželství zvyšuje pravděpodobnost nějaké nemoci o pětatřicet procent a zkracuje život o čtyři až osm let.

Karanténa se tedy nabízí jako vhodný čas k tomu věnovat péči i této oblasti našeho života. Doporučuji zaměřit se na to pozitivní, případně vyřešit staré konflikty, které nám uvnitř ubírají sílu. Můžeme začít tím, že se nad starými křivdami zamyslíme a postupně se je budeme pokoušet propustit. Budeme si představovat, že mizí v dáli, nahrazovat si je jiným obrazem, v mysli si stavět mezi sebou a křivdou zeď. Nebo si můžeme představit, že tu křivdu dáme do krabice a krabici odložíme vedle sebe, abychom si uvolnili místo. Toto bude mít mimo jiné vliv i na výše zmiňovanou hladinu stresu, protože budeme zkrátka spokojenější.

Relaxační je meditace i háčkování

V neposlední řadě je pro náš imunitní systém nezbytná relaxace. Důležité ovšem je, aby relaxace byla vědomá. To znamená zvolit si aktivitu, která nás odreaguje, odvede a zaměstná naši pozornost úplně jiným směrem, než je pro náš den běžné.

Ne každému vyhovuje meditace, i když jako forma relaxace je báječná. Doporučuji dělat „něco skutečného“ – pro někoho je to vyšívání, háčkování či jiné ruční práce, někdo se zrelaxuje při hraní deskových her, hraní na hudební nástroj, čtení knihy, bublinkové koupeli, péči o domácí mazlíčky atd. Tyto činnosti většinou spojuje určitá míra kreativity.

Dobře se na to vyspat

Na závěr dne doporučuji kvalitní a přiměřeně dlouhý spánek. Během něj se regenerují buňky a zároveň se opět vyplavují hormony, které snižují hladinu stresu a následně pak zlepšují náladu.

Život nám přináší různé zkoušky a teď se kvůli koronavirové nákaze a všem vládním opatřením nacházíme ve zcela nové a zatím ještě nezmapované situaci. Není vždy snadné dodržovat všechna sebeopečovávající doporučení, ale možná je teď ten pravý čas obrátit pozornost zvenku dovnitř a pověnovat se každý sám sobě. Jsem si jistá, že každý objevený střípek nás posune dál.

Autor článku

Bc. Lucie Červenková

Fyzioterapeutka, nutriční terapeutka, terapeutické centrum Namao.

Vystudovala obor fyzioterapie na 2. lékařské fakultě a nutriční terapie na Vyšší odborné zdravotnické škole, ve své práci využívá propojení těchto dvou oborů.

'; 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 »