Netradiční plody: kdoule, mišpule a spol.

16. 8. 2013

Sdílet

Autor: Isifa.cz
Klikve, jeřabiny, dřišťál, moruše, trnka… Netradiční plody zpestří jídelníček, jsou dobré a zdravé. Zkuste recept na kdoulový „sýr“, je to bomba a v chladu vydrží i několik měsíců.

Ovoce bývá velice oblíbenou a zdravou součástí jídelníčku. Už na základní škole se dětí učí základní rozdělení na malvice, peckovice a bobule. Tradiční druhy každý zná a především v létě a na podzim se můžeme těšit na bohatou nabídku zralých plodů nejrůznějších tvarů, barev i chutí, které nám poskytují vitamíny, minerály a vlákninu v plné míře. Každému chutná něco jiného, a tak si můžeme vybírat. Také možnosti zpracování plodů jsou pestré.


Autor: Isifa.cz

Kdoule vzhledem připomínají jablka nebo hrušky. Syrové se ale jíst nedají.

Poměrně žádanou novinkou je rakytník. Před nedávnou dobou jej nikdo pomalu ani neznal a dnes je pro jeho výrazné léčebné účinky i bohatý obsah cenných vitamínů a minerálů velice poptávaným produktem. Oblíbené jsou i méně dostupné brusinky, které u nás běžně nerostou. Jsou vyhledávané především pro své blahodárné účinky na močové cesty.

K tématu: Účinná prevence a pomoc při zánětu močových cest

Existují také méně známé druhy, jejichž názvy spíše patří do botanického atlasu než do kuchyně. Jenomže i ony mohou mít své využití a dokonce vám i mohou chutnat. Řada z nich obsahuje velké množství vitamínů a minerálů stejně jako tradiční ovoce. Měli byste ale dávat pozor na to, co sbíráte. Některé neznámé plody mohou být i jedovaté.

Exotické plody dovážené z dalekých tropických či subtropických oblastí ponechme stranou a zaměřme se na plody, které se běžně vyskytují u nás a my třeba o tom, že se i dají konzumovat, nemáme ani ponětí.

Dřín a dřišťál obsahují velké množství vitamínu C

Dřín obecný je keř s malými červenými plody, které dozrávají v září. Jsou lehce kyselé a obsahují poměrně velké množství vitamínu C, dále vitamín A, draslík, vápník, hořčík, třísloviny, pektiny a rovněž rutin, které je také obsažen v pohance. Používaly se k léčbě průjmu a trávicích potíží. Zpracování je běžné jako u jiných druhů ovoce – výborné jsou kompoty, džemy, šťáva nebo také víno či obdobně jako brusinky doplněk ke zvěřině. Při zavařování je ideální kombinace s jinými druhy ovoce, například jablky, hruškami nebo brusinkami či jeřabinami. Dá se také připravit dřínkový čaj.

Dřišťál je vysoký trnitý keř s podobnými červenými plody jako má dřín. Dozrávají rovněž na podzim. Nakyslé plody mají opět vysoký obsah vitamínu C a kromě šťávy a zavařenin je také výborné dřišťálové víno či čaj proti nachlazení, který je možno kombinovat také se šípky. Čerstvé plody naložené v medu se užívají proti horečce. Listy dřišťálu se někdy přidávají do salátu, ale je dobré mít na paměti, že je můžeme použít pouze v malém množství – obsahují totiž jedovatý alkaloid berberin, který se vyskytuje například také v opuncii nebo řebříčku. Kromě příznivých léčebných účinků berberinu na játra se také uvádí schopnost hubit Candidu a chlamydie. S množstvím by se to ale rozhodně nemělo přehánět, přece jenom se jedná o jed.

Klikva, moruše, kdouloň, mišpule. Znáte je?

Podobně jako brusinka se na vlhčích rašeliništích vyskytuje nízký keříček s červenými plody, které dozrávají na podzim. Jedná se o klikvu žoravinu, která má i podobné složení jako brusinka a rovněž se užívá při zánětech močových cest a také při horečkách a nachlazení.

Moruše jsou plody vzhledem připomínající ostružinu. Rostou na morušovnících, které se nacházejí spíše v teplejších oblastech a dozrávají od července do září. Obsahují pektiny, vitamíny A, C, E, B, kyselinu listovou a také řadu minerálů. Mají dobrý vliv na střeva, léčí bolesti v krku a záněty dýchacích cest. Listy morušovníku jsou typickou a jedinou potravou bource morušového. Moruše se zpracovávají obdobně jako jiné ovoce, například je lze přidat do kompotu, připravit z nich sirup, víno či je možné je i konzumovat sušené.

Kdouloň pochází z Kavkazu. Plody připomínají jablka a podobně se také zpracovávají. Dozrávají na podzim. Obsahují hodně pektinu, tříslovin, vitamínů, minerálů a také dostatek železa. Léčí trávicí potíže, kašel a jsou prospěšné při krvácení či anémii. Konzumují se pouze tepelně upravené a zpracované.

Maličké plody mišpule se sklízí na podzim a připravují se z nich především marmelády nebo víno. Jsou dieteticky chudé, ale obsahují prospěšné vitamíny a jsou velice účinné při střevním kataru a průjmu. Keříky mišpulí najdete převážně na Východě a ve Středomoří.

Recept na kdoulový „sýr“

Suroviny: 1 kg protlaku z kdoulí, 300–400 g cukru, mandle, vlašské nebo lískové ořechy, citrónová či pomerančová kůra

Omyté kdoule zbavené jadřinců podlijeme vodou a dusíme do měkka. Poté pomeleme. Protlak zahříváme na mírném ohni a postupně do něj přidáváme cukr, oloupané a pokrájené mandle a ořechy, případně kůru z citrónu či pomeranče. Protlak nalijeme do formy „srnčí hřbet“, kterou jsme vymazali a vysypali krupicovým cukrem a necháme v chladu zatuhnout. Tuhý „sýr“ je možno v chladu uchovávat i několik měsíců.

Plody černého bezu či jeřabin je lepší konzumovat s mírou

Černý bez a jeřabiny jsou poměrně známé plody, které obsahují řadu cenných vitamínů. Je však dobré vědět, že je lepší je konzumovat pouze v malém množství. Mohou totiž obsahovat také jedovaté látky.

Květy černého bezu se sbírají na jaře a jsou na užití bezpečnější než plody, které dozrávají koncem léta a na podzim. Přesto je černý bez považován za jednu z nejlepších léčivých rostlin a jeho využití je opravdu široké. Zatímco z květů se připravuje čaj, sirup, víno či se klidně mohou obalit v těstíčku a osmažit, plody se zpracovávají klasicky jako jiné druhy ovoce. Typická je šťáva, sirup, víno, džem nebo ovocná polévka.

Bezinky obsahují třísloviny, flavonoidy, antokyanové barvivo, rutin, vitamín C, A, vitamíny skupiny B – také cholin, který má blahodárný vliv na paměť a soustředění, pomáhá eliminovat negativní působení stresu, léčí kardiovaskulární choroby i nejrůznější nervová onemocnění. Plody černého bezu by se měly konzumovat vždy tepelně upravené. Působí celkově projímavě a je opravdu vhodné užívat je pouze v malém množství. Vyšší dávky mohou kromě průjmu vyvolat i bolesti hlavy a podrážděnost. Stopky bezinek, kterých bychom se při sběru měli vyvarovat, obsahují toxický glykosid sambunigrin, jež dráždí ledviny. Nachází se v listech, nezralých plodech a semenech.

Jeřáb obecný s krásnými oranžovými plody dozrává na podzim. Bobule obsahují karoteny a vitamín C, jsou projímavé, močopudné a podporují vylučování žluči. Semena jeřábu obsahují toxický amygdalin, který se nachází také například v jádrech meruněk nebo mandlích a je považován za novodobý vitamín B 17 léčící rakovinu. Tato teorie je však sporná. Tak jako tak se jeřáb pro své projímavé a mírně toxické účinky doporučuje užívat pouze v malém množství. Zpracovává se jako kompot, sirup, víno nebo oblíbená příloha ke zvěřině.

Podobně se zpracovává jeřáb černý neboli aronie, který má vysoký obsah vitamínu C a obsahuje stejně jako bezinky antokyanové barvivo a řadu jiných vysoce prospěšných látek. Plody aronie jsou považovány za výborné antioxidanty s mnoha léčivými účinky. Obsahují také železo, mnoho flavonoidů, rutin a další vitamíny a minerální látky. Je uváděn jejich protirakovinný účinek, šťáva z aronie se doporučuje popíjet jak preventivně, tak při mnoha nejrůznějších chorobách.

Recept na kompot z jeřabin a dřínu

Plody dřínu a jeřabiny krátce povaříme a spolu s borůvkami, brusinkami a oloupanými a pokrájenými hruškami zalijeme sladkým nálevem, který jsme připravili z jednoho litru vody a 800 g cukru. Dáme do sklenic, dobře uzavřeme a zavaříme. Je možno podávat také ke zvěřině.

Měla babka trnku, vařila ji v hrnku

Trnka obecná je trnitý keř, který roste na sušších vápenatých půdách. Jeho název je docela známý – vzpomeňme si například na film „Za trnkovým keřem“, časopis „Trnky – Brnky“, písničku o tom, jak babka vařila trnku v hrnku či přirovnání „máš oči jako dvě trnky“. Ale v praxi trnku pozná nebo využívá málokdo. Je to škoda.

Modré plody obsahují třísloviny, pektin, vitamín C, A, vitamíny skupiny B, draslík, hořčík, velké množství vápníku, ale také již zmíněný jedovatý glykosid amygdalin. Doporučují se jíst pouze v menším množství a tepelně upravené. Přidávají se do kompotů, připravují se z nich vína a likéry. Působí proti průjmu a jsou také dobré na močové cesty.

Čtěte dále: Které květiny se dají jíst?

Autor článku

Externí redaktorka a copywriterka píšící pro webové i tištěné magazíny. Zaměřuje se na oblast zdraví, historie medicíny, psychologie, filozofie, etikoterapie a alternativní medicíny.

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