Bylinky a koření pro zahřátí: zázvorová omáčka umí divy

Sdílet

Jako prostředek proti kašli se osvědčil především silný zázvorový čaj, který získáte přelitím nastrouhaného zázvoru vroucí vodou. Po vychladnutí můžete pro zvýšení léčebného účinku do čaje přidat lžíci medu a citronovou šťávu.
Nejen teplý svetr, ale taky vhodné jídlo zahřeje. A to pořádně, zevnitř a na dlouho. Které bylinky a koření pomohou, aby nám i v zimě bylo teplo?

V mrazivých dnech netoužíme po ničem jiném, než se pořádně prohřát. V teple u kamen je to sice fajn, ale ještě lepší je zahřát se pořádně zevnitř. Teprve pak se budeme cítit opravdu dobře. Naštěstí máme k dispozici nespočet druhů bylin a koření, které nám s tímto mohou pomoci.

Chladné období roku je logicky spojeno i s nemocemi z nachlazení. Jakmile necháme své tělo prochladnout, neštěstí je na světě (přečtěte si více o tom, proč se nachladíme, když je zima). Naštěstí nás příroda vybavila spoustou prostředků, které nás mohou před problémy tohoto ročního období uchránit. A navíc postaví bariéru mezi námi a případnými virózami, chřipkami či rýmou.

Prohřívací strava

Ne nadarmo se tedy hovoří o tom, že je v zimě nutno jíst potraviny, které tělo prohřívají. Budeme se díky nim cítit lépe, ochrání nás před případnými nemocemi z nachlazení, a navíc i zvýší činnost metabolismu, takže budeme lépe spalovat tuky.

V tomto období je tedy vhodné do jídelníčku zařadit ¼ vhodné zeleniny, ¼ sacharidů, ¼ bílkovin a ¼ tuků a dalších důležitých látek. Co se však týče zeleniny, neměla by být ledajaká.

Zkuste se zahřát jídlem:

Zázvorová omáčka

Přísady: 50 g čerstvého zázvorového kořene, 1 malá červená feferonka, 100 ml zeleninového vývaru, 2 lžíce pomerančové šťávy, 2 lžíce sójové omáčky, 1 špetka cukru, sůl, 4 lžíce oleje

Příprava: Zázvor oloupeme malým nožem a jemně nastrouháme. Z feferonky odstraníme semínka a lusk jemně nasekáme. Rozmícháme zeleninový vývar, pomerančovou šťávu, špetku cukru, sůl a olej. Přimícháme zázvor a feferonku. Skvěle chutná k pečenému masu nebo smažené zelenině.

V našich podmínkách jsou ideální takzvané zimní druhy zeleniny. Mezi ně patří zelí, kapusta, pórek, kedlubny, červená řepa, celer, cibule, česnek či tykve, dýně, lilek a růžičková kapusta. Pro ještě lepší efekt je vhodné tyto potraviny jíst tepelně zpracované. Čerstvá zelenina by tělo mohla paradoxně ještě více ochladit, zpomalit metabolismus, a dokonce i oslabit imunitní systém. Nebojme se tedy připravit si hustý zeleninový vývar například s kroupami, divokou rýží nebo pohankou. A teplou zeleninu můžete přidávat i jako přílohu k jiným pokrmům.

Koření a bylinky pro zahřátí

Abychom tělo ještě více prohřáli a zároveň jej ochránili před nemocemi, je dobré využívat služeb všelijakého koření. Přičemž v tomto období se nejvíce hodí například kari, pepř, paprika, rozmarýn, muškátový oříšek, hřebíček, skořice či zázvor.

Skvělí jsou i zahřívací pomocníci z bylinkového světa:

Koriandr

Oceníte jej třeba na pizzu s avokádem a smetanou. A jaká je vlastně jeho chuť? Někde mezi šalvějí a pomerančovou kůrou. Možná vám bude připomínat obojí. Dobře vyzrálé plody jsou aromatické a mají nasládlou chuť.


Autor: Isifa.cz

Co se léčivých vlastností týče, je koriandru připisován hlavně uklidňující efekt na žaludek. Dále však také může být podpůrným prostředkem při vykašlávání a podporuje chuť k jídlu. Je to jednoletá bylina s výraznou chutí i vůní. Chcete-li si jej zasázet do truhlíku, pusťte se do toho. Jediné, co koriandr potřebuje, je dostatek denního světla. Pokud mu jej dopřejete, máte vyhráno a můžete mít vlastní úrodu.

Petržel

Petrželka svou chutí lehce připomíná celer či muškát. Je významným zdrojem vitamínů, zejména C, B1, B2, B3, B6, B12, E a A, a ve velkém množství obsahuje také fosfor, mangan, vápník, draslík, hořčík a chlor. Je silně aromatická a má významné močopudné účinky. Navíc také zabraňuje nadýmání. Kombinovat se dá skvěle například s extra zahřívacím kari kořením.


Autor: Isifa.cz

Ale pozor, i s obyčejnou petrželí je nutno zacházet s mírou a používat ji v rozumném množství. Jinak by nám mohla podráždit ledviny. Pokud se dáme do jejího pěstování, pak je ideální dopřát jí místo na plném slunci, případně jen v mírném stínu. Potřebuje vlhkou, mírně alkalickou, propustnou půdu bohatou na živiny a vydatnou zálivku.

Kerblík třebule

Rostlinka, která je příbuzná petrželi. Ovšem v kombinaci třeba s hráškem, chilli a parmazánem bude kerblík třeba v zapečených bramborách naprosto neodolatelný. Z kerblíku otrháváme mladé lístky, které jsou nejlepší a mají nejsilnější aroma. Jsou lehce nasládlé a chuť mají anýzovou, kořeněno-sladkou.


Autor: Isifa.cz

Jinak jde o letničku kvetoucí od počátku května až do července. Bylinka obsahuje glykosidy a hořčiny, čímž značně posiluje látkovou výměnu. Dále je bohatá na vitamíny A a C, minerální látky (především hořčík a železo), obsahuje i velké množství karotenů. Pokud jej budeme pravidelně jíst, pak můžeme počítat s tím, že sníží hladinu cukru v krvi. Zároveň je i močopudný.

Řeřicha

Řeřicha chutná lehce pikantně a oživí každý pokrm, do kterého ji přidáte. Lehce pepřovou příchuť dodávají těmto výhonkům obsažené hořčičné oleje a hořčiny. Pěstovat se dá také velmi snadno. Semínka můžeme doma rozprostřít na namočenou vatu, i tady řeřicha bez problémů vzejde. Případně ji dejte do truhlíku nebo květináče. Dařit se jí bude v lehčím substrátu, v písku, jemnějších pilinách nebo na vrstvě papírových ubrousků. Co však řeřicha nutně potřebuje, je pravidelná pořádná zálivka.

Řeřicha prohřívá tělo, posiluje imunitu a umí napomoci tělu zbavit se toxických látek. Poradí si i s častými záněty močového měchýře, může být podpůrným prostředkem při kašli i zánětech dýchacích cest. Je vhodná pro detoxikační kúry.

Tymián

Je hotovým zázrakem při poruchách trávení i nemocech dýchacího ústrojí. Díky svým antiseptickým účinkům se výborně osvědčuje jako přírodní lék na kašel. Ovšem pozor – tymián má mírně trpké aroma, je tedy nutné s ním při přípravě jídel spíše šetřit.


Autor: Isifa.cz

Pokud jde o pěstování, jde o naprosto nenáročnou rostlinku, které se bude dařit téměř kdekoliv. I když nejraději má suchou, lehkou a dobře propustnou půdu. A nepřelévejte – to tymiánu rozhodně nesvědčí!

Rozmarýn

Rozmarýn má nezaměnitelné aroma. Jeho chuť je ostrá až omamně kafrová a lehce nahořklá. Ideální je ve spojení s rajčaty, cuketami nebo lilkem. Jako lék je rozmarýn vhodný k léčbě depresí (i z nedostatku slunečního svitu, což přes zimu trápí mnoho lidí), bolestí hlavy a svalových křečí. I u rozmarýnu pozor – dráždí žaludek, střeva a ledviny, měl by proto být užíván šetrně.


Autor: Isifa.cz

Co se týče pěstování, je to celkem velká bylina, takže potřebuje dostatek prostoru, a hlavně hodně slunečního světla. Půda by měla být lehká, písčitá, dobře propustná a jen velmi mírně vlhká, přemokření může způsobit hnilobu kořenů a odumření celé rostliny.

Vyrobte si na zahřátí těla:

Skořicový krém

Přísady: 20 ml lněného oleje, 20 ml kokosového oleje, 5 g včelího vosku, 20 ml destilované vody, špetku skořice, 15 ml aloe vera gelu, 4 kapky vitamínu E, 2 kapky skořicového éterického oleje

Příprava: Vodu přivedeme k varu a zalijeme mletou skořici. Necháme zchladnout a poté přecedíme. Na plotně rozpustíme včelí vosk a k němu přidáme lněný a kokosový olej. Odstavíme a více již nezahříváme. Do mixéru dáme gel aloe vera (buď koupený, nebo přímo z rostliny), vitamín E a skořicový výluh. Mixujeme na nejvyšší rychlost, dokud se suroviny nespojí, následně přidáme olejovo-voskovou hmotu a éterický olej a mixujeme dál. Ve chvíli, kdy krém začne tuhnout, vypneme mixér a krém přendáme do čisté nádoby. Používáme ideálně na noc v silnější vrstvě. Po natření oblékneme na nohy silnější ponožky.

Autor článku

Věnuje se bylinářství, aromaterapii a masážím. Připravuje vlastní projekt Bylinkový magazín. Jako bylinářka spolupracuje s Institutem funkční medicíny a výživy. Vystudovala mj. obor Léčivé rostliny na Farmaceutické fakultě v Hradci Králové.

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