Deset nejoblíbenějších salátů: nej je ledový

Sdílet

Autor: Isifa.cz
V obchodech je k mání kolem dvaceti různých druhů salátů. Víte, jak s kterým nakládat, k jaké úpravě se hodí a jak podpoří naše zdraví? Nabízíme přehled deseti nejoblíbenějších druhů.

Přestože jsou saláty na pultech našich obchodů celoročně, jejich prodeje razantně stoupají v letním období; zvláště proto, že dobře poslouží jako příloha ke grilovaným masům nebo jako lehký oběd v parném dni. Lékaři nad zvýšeným přísunem salátů také plesají, mají totiž vysoký obsah minerálních látek a vitaminů, jsou lehce stravitelné a mají velmi nízkou energetickou hodnotu. Průzkum společnosti Tesco ukázal, že alespoň jednou týdně si saláty dopřává osmdesát procent Čechů. Mezi nejoblíbenější patří dlouhodobě listy ledového, hlávkového a římského salátu. Na českých stolech se ale objevují i méně známé odrůdy jako lollo rosso nebo nejrůznější druhy čekanky. „V minulých letech byl u zákazníků nejoblíbenější klasický hlávkový salát, nyní jsou spíše trendem saláty ledové. Mají nasládnou chuť, jsou velmi osvěžující a nabízí široké využití v kuchyni,“ uvádí technický manažer Tesco, Miloslav Macháček.

Poznejte s námi různé druhy salátů a zjistěte, jaké jsou jejich přínosy pro naše zdraví.

Ledový salát 

Má světle zelenou barvu, která se u košťálu mění do běla. Příjemně osvěžuje organismus, je velmi lehký. Jeho chuť je nasládlá a šťavnatá. Při konzumaci jemně křupe. Nemá téměř žádné energetické hodnoty, obsahuje ale velké množství minerálních látek, vlákniny a vitaminů B, C a E. Traduje se, že zmírňuje stres, zklidňuje nervy a pomáhá při usnutí díky látce lactucin v něm obsažené.

Ledový salát je nejlépe konzumovat čerstvý, díky jeho lahodné chuti klidně samotný, ale skvěle se hodí např. do salátu s lososem, tuňákem či kuřecím masem, výborný je také ledový salát s octovou zálivkou a špekem. Dá se z něj vyrobit i čerstvá šťáva, která dokáže svým povzbuzujícím účinkem po ránu nahradit i šálek kávy.

Skladování: do 5 °C
Trvanlivost: při ideálních podmínkách 5–6 dnů

Římský salát

Tento salát má úzký, podlouhlý tvar a křupavé sytě zelené listy. Je velmi oblíbený pro svou příjemnou mandlovou chuť. Římský salát byl znám již v pátém století v Číně, kde symbolizoval štěstí a jedl se při výjimečných událostech. Díky obsahu vlákniny, minerálů
a vitamínů pomáhá při potížích se střevy a zažívacím systémem a při vylučování škodlivých látek z těla. Je také bohatý na draslík, který pomáhá snižovat vysoký krevní tlak a tím i riziko srdečního záchvatu.

Římský salát je ten jediný a pravý, který patří do slavného Caesar salátu s kuřecím masem, ančovičkami a parmezánem. Skvěle se taky hodí do sytějšího salátu Nicoise, který se připravuje z vařených brambor, fazolek, tuňáka, vařeného vejce a oliv.

Skladování: do 5 °C
Trvanlivost: při ideálních podmínkách 5–6 dnů

Lollo rosso

Salát vyznačující se kadeřavými načervenalými listy a lehce nahořklou chutí připomínající oříšky. Kvůli obsahu vitaminu E je vhodný i jako prevence proti rakovině prsu nebo tlustého střeva. Do salátů se skvěle hodí díky své kadeřavosti a zajímavé barvě, použít ho můžete i jako dekoraci na talíři.

Lollo biondo

Je to salát s nazelenalými kadeřavými listy, pokud je čerstvý, listy by měly křupat. Chuť má velmi jemnou a hodí se k nejrůznějším sýrům. Stejně jako jeho příbuzný lollo rosso obsahuje vitamín E a kyselinu listovou, která hlídá dělení buněk. Je bohatý i na hořčík, jež podporuje výkon svalů a posiluje srdce. Dá se jíst pouze se zálivkou či v kombinaci s jinou zeleninou.

Skladování: do 5 °C
Trvanlivost: 3–4 dny

Little Gem

Je tvořen velmi měkkými venkovními listy a křupavým srdíčkem uprostřed. Je to nutričně hodnotná zelenina, obsahuje vitamin C, provitamin A, kyselinu listovou, vitaminy B1, B2, E, draslík, fosfor, vápník, hořčík, železo, zinek, jód. Salát můžete jíst samostatně nebo ho smíchat třeba s rajčaty, balkánským sýrem či mozzarellou nebo čímkoliv, na co máte chuť. Pro lepší vstřebatelnost vitamínů je dobré ho polít olivovým olejem, což ostatně platí i pro ostatní saláty.

Skladování: do 5 °C
Trvanlivost: 3–4 dny

Escarole

Je to u nás nepříliš známý druh salátu, která má rozeklané velké listy a lehce nahořklou chuť. Okrajové listy jsou tmavší, čím blíže středu, tím je salát světlejší. Ecarole se dá použít jak v čerstvých salátech, tak i tepelně upravený např. v těstovinách s krevetami a rajčaty. Srdíčko salátu lze podávat se slaninou nebo klobásami, hodí se i do polévky z bílých fazolí.

Skladování: do 5 °C
Trvanlivost: 3–4 dny

Polníček

Listová zelenina, jejíž drobné listy mají jemnou a lehce oříškovou chuť. V maličkých listech polníčku nalezneme spoustu vitamínu C, dokonce více než v citronech, a také vitamín A a E. Z minerálních látek je výrazně zastoupeno železo, ale i hořčík, draslík, vápník a samozřejmě kyselina listová. Za zmínku stojí i obsah betakarotenu. Polníček je vhodný na podporu imunity, ale také pomáhá zahánět špatnou náladu a stres. Nejčastěji se používá do salátových směsí, ale i jako samotná příloha k masu, pokud třeba držíte dietu. Výborný je i na tmavém chlebu namazaném lučinou. Jeho listy můžete rozmixovat a vytvořit zdravou šťávu, po přidání pár kapek smetany vznikne lahodný polníčkový krém.

Skladování: do 5°C
Trvanlivost: 3–4 dny

Ostatní plodiny

Špenát

Je to listová zelenina z čeledi laskavcovitých. Obsahuje cenné živiny jako karotenoidy
(i beta-karoten) či lutein, který působí antioxidačně, má také vysoký obsah vitaminu K. Konzumace špenátu působí příznivě na vývoj svalstva člověka a pomáhá předejít degeneraci žluté skvrny oční sítnice, která často může za slepotu u starších lidí. Špenát se upravuje na mnoho způsobů. Lehce povařený s česnekem jako příloha k masu, výborný je také s těstovinami nebo jako náplň do lasagní. Špenát se často prodává i zamražený, a to jak listový, tak sekaný.

Skladování: do 5 °C
Trvanlivost: 3–4 dny

Rukola

Salát vynikající  svou typickou nahořklou lehce pikantní chutí. Poznáme ji díky úzkým po stranách vykrajovaným lístkům. Rukola obsahuje mnohem více vitaminu C a beta karotenu než ostatní listové rostliny. Jako zelená listnatá zelenina má v sobě barvivo chlorofyl, jež má pročišťující a oživující účinek na organismus, hlavně na játra a trávicí trakt. Odvar z rukoly má mírně močopudné účinky, dá se pít při intoxikaci jater i zažívacích problémech.
Rukola se skvěle doplňuje s rajčaty, česnekem a bazalkou, najdeme ji proto v mnoha italských jídlech. Dá se použít za syrova do různých zeleninových salátů nebo obložených baget, hodí se i na pizzu, do těstovin či rizota. Rukolou můžete ozvláštnit šťouchané brambory nebo květákovou polévku. Výborné je i rukolové pesto.

Skladování: do 5 °C
Trvanlivost: 3–4 dny

Řapíkatý celer

Je to část rostliny miřík celer, která se pěstuje jako kořenová zelenina pro své bulvy a listy. Má šťavnatou, lehce štiplavou chuť. Řapíkatý celer působí protizánětlivě a močopudně, povzbuzuje chuť k jídlu i činnost ledvin, uklidňuje a podporuje trávení, zpevňuje cévy a urychluje látkovou výměnu. Využívá se dokonce i jako zdraví neškodné afrodiziakum. Jako vitamínová bomba v sobě ukrývá vitamín A, B, C a K, betakaroten a kyselinu listovou a velké množství minerálních látek – vápník, hořčík, draslík, jód, železo a chrom. Pěstuje pro své dužnaté silné stonky, které se před konzumací lehce oloupou. Může se podávat syrový s tvarohovým sýrem nebo se může máčet v různých dipech např. k pečeným kuřecím křidélkům. Řapíky lze taky vařit, dusit, restovat, zapékat i grilovat. Řapík celeru se stal mimo jiné nedílnou součástí oblíbeného koktejlu Bloody Mary.

Skladování: do 5 °C
Trvanlivost: 3–4 dny

Mohlo by se hodit: Kalendář českého ovoce a zeleniny – kdy co u nás roste

Použité zdroje: TZ Tesco

Autor článku

Redaktorka serveru Vitalia.cz se zaměřuje zejména na kvalitu potravin a kvalitu jejich prodeje. Věnuje se také zdravotní problematice.

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