Instantní kaše. Ano, či ne?

5. 11. 2019

Sdílet

Kaše jsou oblíbenou variantou snídaně, zvláště v lezavém počasí. Nyní jsou populární kaše instantní, u kterých láká snadná, rychlá příprava a také pestrá nabídka na trhu. Hojně je jedí nejen děti, ale i dospělí. Jsou tyhle kaše zdravé a jak si mezi nimi vybrat?

Sychravá studená rána, která nás v nejbližší době čekají, si žádají vydatnou a teplou snídani, jež nás příjemně prohřeje. A tak osvěžující ranní smoothie pomalu střídají teplé kaše, jejichž fotky hojně plní sociální sítě.

Nejčastěji saháme po obilných kaších. Snad neoblíbenějším typem jsou ovesné vločky připravované na spousty způsobů. Volit můžeme i pohanku, rýži nebo bulgur.

Ráno dělá den

Ne nadarmo se říká, že snídaně je základ dne. Měla by nás správně nastartovat do dalšího nabitého dne. Musíme tedy dbát na to, aby naše jídlo bylo obohacováno všemi důležitými živinami, které zajistí správné fungování našeho těla, a my pak budeme schopni zvládnout vše, co nás čeká.

Pokud se už rozhodujeme volit teplou kaši, nejlepší by samozřejmě bylo připravit si ji doma. Jenže ne vždy to situace dovolí a my musíme vzít zavděk instantní směsí s rychlou přípravou.

Instantní kaše: na co si dát pozor

Regály v obchodech jsou nejrůznějších instantních kaší plné. Lákavé obaly s potisky ovoce, čokolády, přídavkem superpotravin nebo hrdě hlásajícím nápisem „se sníženým obsahem cukru“, „fitness“ nebo „protein“… to všechno máme v dnešní době na výběr. Jenže méně je někdy více.

Naše oči a chuťové buňky sice plesají, sliny se sbíhají, ale jak v takovém ohromném množství výběru poznat kaši takovou, která nejvíce prospěje i našemu zdraví? Jak pouze neskočit na marketingový tah obchodníků?

Během výběru musíme být velice obezřetní, protože taková nevhodně připravená ranní kaše nám může zapříčinit rozkolísání hladiny krevního cukru, a způsobit tak neukojitelné chutě po zbytek dne i brzký hlad.

Galerie: 10 potravin, po kterých budete mít ještě větší hlad

Velká spousta kupovaných předpřipravených kaší je doplněna o rostlinné oleje, aromata, bramborový škrob, přidaný cukr, nekvalitní kousky čokolády, doslazované sušené ovoce a další přidané látky zajišťující trvanlivost a stálost výrobku… a tím výčet surovin jistě nekončí.

Kupované směsi jsou bohaté na sacharidy a tuky, avšak s nedostatečným podílem bílkovin na to, aby se jídlo stalo opravdu plnohodnotným.

Ve složení bychom si měli hlídat nízký podíl přidaného cukru, sodíku a nasycených mastných kyselin (NMK), které jsou pro naše zdraví rizikové. Naopak bychom měli dbát na dostatečné množství bílkovin, kvalitních sacharidů a vlákniny.

Vločky, rýže, pohanka? Jakou kaši zvolit

Kaše z polysacharidů nám dodají tu správnou energii, která se v našem těle bude uvolňovat postupně a zasytí nás po delší čas. Mezi takové zdroje patří například již zmíněné ovesné vločky, které jsou lehce stravitelné, obsahují rozpustnou vlákninu a nalezneme v nich vitamín B1 nebo E.

Pokud zvolíme do ranní kaše pohanku, obohatíme se o vitamín C, zinek nebo mangan.

Rýžové vločky jsou také lehce stravitelné, s nízkým obsahem sodíku.

Které značky v obchodech hledat?

Firem nabízející rychlou záchranu v časovém presu je opravdu celá řada. My si představíme pět značek, po kterých se vyplatí v obchodech podívat.

Nominal

Značka Nominal je na trhu již pětadvacet let. Zaměřují se na výrobky zapadající do zdravého životního stylu. Dbají na kvalitní suroviny a specializují se zejména na bezlepkové a bio potraviny.

Jejich doménou jsou kromě směsí do těst a výroby olejů také i nutričně hodnotné cereální kaše, které jsou k dostání v supermarketech, zdravých výživách nebo na oficiálních stránkách výrobce.

Kaše neobsahují cukr, mléko nebo další přidané látky a jsou vhodné jak pro diabetiky, celiaky, tak i lidi s laktózovou intolerancí.

Pro příklad si uvedeme jejich bezlepkovou rýžovou kaši, která je složena pouze ze 60 % rýže a 40 % kukuřičné krupice. (Energie 1554 kJ / 370 kcal, bílkoviny 7 g, sacharidy 80 g, z toho cukry 0,35 g, tuky 2,0 g, NMK 0,5 g, vláknina 2,2 g, sodík max. 0,7 g.)

Emco

Působí na trhu přes pětadvacet let a specializují se na cereálie a müsli plné chuti.

Představíme si neochucenou verzi natural. Ve složení nalezneme 77 % celozrnných ovesných vloček, cukr, řepkový olej, sušené odtučněné mléko, sušenou syrovátku, jedlou sůl a aroma. (Energie na 100 g je 1749 kJ / 416 kcal, 12 g tuku, 60 g sacharidů, z toho 15 g cukry, 7,8 g vlákniny, 13 g bílkovin.)

Pokud bychom zvolili sladkou verzi, například s čokoládou, složení se nám rozroste o hořkou čokoládu, sušené plnotučné mléko, ovesnou mouku a kakaový prášek.

Bonavita

Vznikla roku 1991. Pod pojmem Bonavita si v překladu máme představit ,,dobrý život“. Vyrábí mimo jiné sušené plody, müsli tyčinky nebo sójové výrobky.

Jejich Dobrá kaše natural obsahuje 48,6 % ovesných vloček, sušený mléčný výrobek, fruktózu, jedlou sůl a aroma. (Výživové údaje na 100 g činí 1673 kJ/397 kcal, 8,3 g tuků, 69 g sacharidů, z toho 25 g cukru, 6 g vlákniny, 8,5 g bílkovin.)

Semix

Semix je ryze česká potravinářská firma vyrábějící kromě cereálních směsí také směsi pro pekaře, cukráře a mlékaře. Směsi jsou neochucené, nedoslazované a bez přidaného tuku a cukru. Výrobky jsou vhodné pro celiaky, vegany a jsou v bio kvalitě. Některé jsou obohaceny o chia semínka a další.

Jejich ovesná kaše se sníženým obsahem cukru obsahuje 71 % ovesných vloček, rostlinnou vlákninu, olivový olej, přírodní aroma a mořskou sůl. (Na 100 g 1406 kJ / 336 kcal, 6,7 g tuků, 46 g sacharidů, z toho 2,4 g cukrů, 30 g vlákniny a 8,7 g bílkovin.)

LeGracie

Značka se pyšní výrobky bez chemie, soli, konzervantů a palmového oleje.

U LeGracie jsem bohužel nenašla neochucenou verzi instantní kaše, aby porovnání bylo férové, ale i tak si tu alespoň pro představu zmíníme jejich rýžovou kaši obohacenou o arašídy a kakao.

Ve složení najdeme rýžovou kaši, rozinky, třtinový cukr, 11 % arašídů, sušené odstředěné mléko, 6 % kakaový prášek se sníženým obsahem tuku a drcené kakaové boby. (Nutriční hodnoty jsou na 100 g 1642 kJ / 392 kcal, 8,4 tuky, sacharidy 66 g, z toho 24 g cukrů, 4 g vlákniny a 11,2 g bílkovin.)

Co si z toho odnést závěrem

Snídani bychom neměli vynechávat ani ve větší časové tísni. Nemusíme jíst ihned po probuzení, ale něco byste za to dopoledne sníst rozhodně měli. Jestli se rozhodnete právě pro teplou kaši, ať již připravenou doma, nebo tu kupovanou, vždy dbejte na to, aby vaše snídaně obsahovala směs kvalitních sacharidů v podobě vloček, jáhel nebo pohanky.

Obohaťte je o bílkoviny. Příkladem může být řecký jogurt, protein či vyšlehaný bílek, který mimo jiné i zvýší objem celé misky.

Nesmíte zapomenout na poslední základní makroživinu – a to jsou tuky. Správné tuky čerpejte z oříšků, chia semínek, strouhaného kokosu nebo kvalitního arašídového másla.

U kupovaných instantních kaší především dávejte pozor na složení. Čím menší výčet použitých potravin ve složení najdete, tím lépe. Kvalitní potraviny nepotřebují přidaný cukr, olej nebo škrob.

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 »