Zelí je super(potravina)

21. 2. 2020

Sdílet

Kysané, nebo sterilované? Červené, nebo bílé? Naše tradiční hlávkové zelí je velice prospěšná potravina, jen je dobré vědět, které a v jaké úpravě je pro vás to pravé.

Na internetu se dočtete ledacos o módních superpotravinách a jejich báječných zdravotních benefitech pro naše tělo. Mnohdy se jedná pouze o marketingový tah, kdy se nás jejich výrobci snaží nalákat na zázračné účinky pro zdraví. Člověk pak dočista zapomíná na potraviny, které má běžně doma, jsou mnohem levnější a paradoxně zdraví prospěšnější.

Co se dozvíte v článku
  1. Zázračné zelí
  2. Co víme o zelí
  3. Nejen vitamínová bomba
  4. Červené, nebo bílé zelí?
  5. Kysané, nebo sterilizované?
  6. Kdy se krotit

Zázračné zelí

Když si vezmeme coby pomocníka Oxfordský slovník, abychom si objasnili, co si pod pojmem „superpotravina“ představit, doslova se dozvíme: „Superpotraviny jsou potraviny, které díky svému nezvykle vysokému obsahu vitaminů, minerálních látek, antioxidantů nebo dalších zdraví prospěšných látek mají pozitivní vliv na různé oblasti lidského zdraví.“

Takové jídlo je ale přece u nás běžně k dostání a nepotřebujeme kvůli tomu utrácet za drahé exotické potraviny a doplňky. Jak řekl kdosi moudrý: „Vaše strava má být vaším lékem a váš lék vaší stravou.“ (Výrok je přikládán Hippokratovi.) Z toho si můžeme vzít především to, že bychom měli volit primárně přírodní potraviny s co nejnižší mírou průmyslového zpracování, které si zachovají veškeré potřebné živiny, minerální látky a vitamíny. A takovou potravinou je naše tradiční zelí. Tedy – někdy je, jindy není.

Co víme o zelí

Jedná se o brukvovitou zeleninu, která se pěstuje již přes čtyři tisíce let. Na sto gramů v něm připadá pouhých devatenáct kilokalorií, je tedy žhavým adeptem pro zařazení do jídelníčku pro ty, kteří se snaží zredukovat svoji hmotnost.

Obsahuje zhruba 5 g sacharidů, 0 g tuku a necelý jeden gram bílkovin. Zelí v sobě skrývá 33 mg omega-3 mastných kyselin a je z 92,5 % tvořeno vodou. Navíc se jedná se o bezlepkovou potravinu, která je tudíž vhodná nejen pro bezlepkáře, ale mimo jiné ji mohou i děti od šesti měsíců.

Zelí můžeme konzumovat v různých formách s mnoha benefity. Například je doporučováno před každým jídlem sníst několik listů syrového zelí jakožto prevenci před jaterním onemocněním, jako jsou cirhóza nebo žloutenka. Kromě toho se doporučuje jej žvýkat alespoň jednou denně pro posilnění zubů.

Šťáva ze zelí má zase projímavé účinky, což ocení zejména lidé trpící zácpou. Doporučuje se vypít zhruba 0,5 l jako prevence před onemocnění dnou, artrózou, revmatem nebo před pálením žáhy. Ve šťávě ze zelí najdeme také potřebná probiotika. Probiotika podporují trávení, působí příznivě na střevní mikroflóru a posilují náš imunitní systém.

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

Drcené listy slouží zejména k vnějšímu ošetření vyrážek, k hojení ran nebo stažení hnisu. Rozhodně se nedoporučuje jej užívat k hojení ran vnitřně. Zelí totiž zvyšuje kyselost a tím omezuje aktivitu bílých krvinek.

Nejen vitamínová bomba

Zelí je skvělým antioxidantem obsahujícím cholin, betakaroten, lutein a flavonoidy. Pravidelné užívání luteinu snižuje riziko vzniku šedého zákalu a degenerativních onemocnění očí. Cholin zase napomáhá zabraňovat rozvoji aterosklerózy a povzbuzuje paměť.

Zelí je dále bohaté na vlákninu rozpustnou i nerozpustnou. Prvně uvedená vláknina je rozpustná ve vodě, která zpomaluje pohyb potravy trávicím systémem, zpomaluje vstřebávání sacharidů, čímž brání kolísání hladiny cukru v krvi a tím je vhodná i pro diabetiky. Nerozpustná vláknina zase dobře vstřebává vodu, změkčuje stolici a udržuje střeva v pohybu. Díky tomu máme pravidelné vyprazdňování a odvádíme odpadní látky z těla ven.

Jako antioxidant eliminuje volné radikály, které poškozují tkáně. Podporuje tím snížení rizika hypertenze, osteoporózy nebo srdečních onemocnění.

Zelí obsahuje také méně známý vitamín U. Ten je zejména protialergenní a podporuje metabolismus žaludeční sliznice.

Sloučenina anthokyan napomáhá potlačovat záněty způsobující srdeční onemocnění v těle. A obsažený chlorofyl se podílí a produkci hemoglobinu a díky tomu dochází i k čistění krve.

Červené, nebo bílé zelí?

Na barvě zelí nezáleží. Obě varianty jsou zdraví prospěšné. Kdybychom se měli na oba druhy zaměřit opravdu zblízka, můžeme říci, že v červeném druhu se nalézá více vitamínu A, vitamínů skupiny B, selenu a také díky němu dochází k vyšší krvetvorbě.

Kysané, nebo sterilizované?

Na trhu máme k dostání dva druhy zpracovaného zelí. Kysané a sterilizované. Je mezi nějaký rozdíl? A je nějaké z nich zdravější? Neplatí to obecně, ale dalo by se říct, že kysaná forma je asi lepší volbou. Záleží ovšem také na konkrétním výrobku, testy opakovaně ukázaly, že s kvalitou kysaného zelí na našem trhu to není valné.

Kysané (čili kvašené či fermentované) zelí je jemně nakrájené hlávkové zelí, které bylo zkvašeno za pomoci bakterií mléčného kvašení (fermentace). Působí pozitivně na trávení, podporuje činnost střev, snižuje krevní tlak a v neposlední řadě zvyšuje odolnost organismu. Z vitamínů se v něm hojně vyskytuje vitamín C, v kysaném zelí ho nalezneme až 24 % z celkové denní doporučené dávky. Podporuje zdraví naší kůže, cév, kostí a zubů. Jsou tu vitamíny B9 a B12 podílející se na správné regulaci nervové soustavy nebo vitamín K pro správné srážení krve a pevnost kostí. Dále v něm nalezneme pektin, který pomáhá odcházení odpadních toxinů z těla, zinek či selen.

Při kvašení se tvoří cholin, který reguluje metabolismus tuků a správnou funkci jater. Ve stogramové porci nalezneme celých 10,4 g cholinu. Proces probíhá za pomoci mléčného kvašení a za fermentaci je následně zodpovědný Lactobacillus. Mléčná kyselina má pozitivní vliv na střevní mikroflóru. V kysaném zelí nazývaném korejské kimčchi (případně kimči) nalezneme více laktobacilů než v jogurtu.

Fermentovaná zelenina obecně je zdrojem prospěšných probiotik a je bohatá na vlákninu předcházející zácpě, naopak podporuje vylučování toxinů z těla prostřednictvím žluče.

Sterilizované zelí je rovněž konzervované mléčným kvašením, jenže tady dochází k tepelné úpravě a tím se i znehodnocuje celá řada prospěšných látek, které bychom ze syrového a kvašeného zelí jinak mohli vytěžit ve větší dávce.

Mimo to je velká pravděpodobnost, že se v kupovaných nálevech bude navíc vyskytovat přidaný cukr.

Galerie: 10 potravin, v nichž byste cukr nečekali. Ale je tam

Kdy se krotit

Všechno má svá pro a proti a stejně tak je tomu i u zelí. Obsahuje totiž vysoké množství sodíku, který má za vinu zadržování vody v těle, zvyšování objemu krve a zvyšování krevního tlaku. Ve sto gramech nalezneme celých 661 mg sodíku, což odpovídá až 28 % doporučené denní dávky. Během domácí přípravy je proto vhodné přidávat již sůl co nejméně a zelí předem nechat řádně okapat a propláchnout. Navíc je možné jej sehnat i se sníženým obsahem sodíku, je ale nutné hledat a pozorně číst etikety.

Mimoto zelí může způsobovat plynatost a nadýmání kvůli rostlinnému cukru rafinóze, průjmu z nestrávené rafinózy ve střevě a následným křečím. Rafinózu si můžeme přiblížit jako složeninu z monosacharidů galaktózy, fruktózy a glukózy. Je lehce zkvasitelná a lidský organismus na rozdíl od rostlin nemá potřebný enzym, aby dokázal řádně odštěpit galaktózu, proto je rafinóza trávena až bakteriemi v tlustém střevě, což může vyvolat onu nepříjemnou plynatost a střevní obtíže.

U kupovaných druhů zelí se častokrát setkáme s přidáním dusitanů a aminů, které jsou rizikové pro vznik rakoviny žaludku nebo častých bolestivých migrén, proto je důležité číst složení kupovaných výrobků.

Na konzumaci zelí by si měly dávat pozor i těhotné a kojící ženy či děti. Lidé trpící vysokým krevním tlakem či onemocněním ledvin nebo lidé užívající dlouhodobě nějaké léky by zvýšenou konzumaci zelí měli prodiskutovat se svým lékařem.

Autor článku

Vystudovala psychologii na Západočeské univerzitě v Plzni, studuje nutriční terapii a absolvovala kurz výživového poradce, včetně akreditovaných seminářů zaměřených na výživu. Jejím koníčkem je psaní článků o zdravé a vyvážené stravě.

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