Řimbaba obecná je okrasná bylina, která ulevuje od migrény. Používá se také jako přírodní insekticid

19. 3. 2024 7:30
přidejte názor
Autor: Depositphotos.com/HeikeRau

Na bolesti hlavy, horečky nebo třeba proti šatním molům se už dlouhá léta používá v lidovém léčitelství sušená řimbaba. Tato téměř zapomenutá bylinka dříve hojně zdobila české zahrádky i parky. Dnes už na ni ale u nás narazíte jen zřídka. Díky svým pozitivním účinkům na zdraví se však stále pěstuje prakticky po celém světě.

Co je kopretina řimbaba?

Co se dozvíte v článku
  1. Co je kopretina řimbaba?
  2. Výskyt a rozšíření řimbaby obecné
  3. Jak vypadá řimbaba obecná?
  4. Obsažené látky
  5. Jaké má kopretina řimbaba účinky?
  6. Využití řimbaby obecné
  7. Kopretina řimbaba: pěstování

Řimbaba obecná neboli kopretina řimbaba (Tanacetum parthenium) je vytrvalá dvouděložná bylina z čeledi hvězdnicovité (Asteraceae), která se dříve používala jako prostředek na urychlení odchodu plodového lůžka během porodu. Dnes se však pěstuje především k okrasným účelům a někdy se pro své pozitivní účinky na zdraví používá také jako lék proti migréně nebo ke snížení horečky.

V angličtině se pro tuto rostlinu podobnou kopretině používá název feverfew, který byl údajně odvozen od latinského slova febrifugia, což ve volném překladu znamená „snižovač horečky“. Ve slovenštině se jí pak říká rimbaba obyčajná a u nás se můžete setkat ještě s názvem vratič řimbaba nebo kopretina heřmánková.

Další druhy řimbaby

V České republice můžete narazit na řadu různých odrůd řimbaby obecné, které byly vyšlechtěny k tomu, aby svým atraktivním vzhledem zdobily zahrady a parky. Mezi ty nejoblíbenější patří zlatolistá odrůda Aureum nebo drobné kultivary Butterball či Golden Moss. Existuje jich však samozřejmě daleko více. Po celém světě se pak kromě řimbaby obecné nachází značné množství dalších zástupců tohoto rodu, jako jsou například:

  • řimbaba chocholičnatá (Tanacetum corymbosum),
  • řimbaba velkolistá (Tanacetum macrophyllum),
  • máří list balšámový (Tanacetum balsamita),
  • vratič obecný (Tanacetum vulgare),
  • řimbaba karpatská (Tanacetum clusii),
  • vratič sinajský (Tanacetum sinaicum),
  • Tanacetum annuum,
  • Tanacetum aucheri,
  • Tanacetum bipinnatum,
  • Tanacetum camphoratum,
  • Tanacetum canariense,
  • Tanacetum densum,
  • Tanacetum millefolium,
  • Tanacetum oltense,
  • Tanacetum oxystegium,
  • Tanacetum tricholobum,
  • Tanacetum zangezuricum. [1, 2, 3, 4, 5]

Výskyt a rozšíření řimbaby obecné

Původním areálem výskytu řimbaby obecné je oblast Balkánu, Kavkazu a Malé Asie. V současné době se ale už pěstuje ve většině evropských zemí, zejména pak ve státech nacházejících se kolem Středozemního moře, v Německu a v teplejších alpských lokalitách. Setkat se s ní přitom můžete také v Severní Americe a v Austrálii.

U nás se tento druh v dřívějších dobách pěstoval poměrně hojně. Dnes už se tu ale netěší takové oblibě jako dříve. Na území České republiky můžete na řimbabu narazit v parcích, na hřbitovech, na návsích nebo na různých ruderálních stanovištích. Roste hlavně v půdách, které jsou bohaté na dusík, a ve volné přírodě se někdy vyskytuje také na březích potoků a řek. [6, 7, 8]

Jak vypadá řimbaba obecná?

Svým vzhledem může řimbaba obecná některým lidem připomínat heřmánek pravý. Nicméně na základě určitých determinačních znaků se od této byliny dá poměrně snadno rozpoznat. Vratič řimbaba má zaoblenou pětihrannou, mělce rýhovanou lodyhu, která je v horní části rozvětvená. Bylina může být pýřitá nebo žláznatě chlupatá a 30 až 60 cm vysoká.

Její listy jsou střídavé a řapíkaté (spodní dlouze, horní krátce). Čepel listu má vejčitý tvar, je 5 až 7 cm dlouhá, zhruba 3,5 až 4,5 cm široká a na rubové straně hustě žláznatá. Nachází se na ní 2 až 5 párů vejčitých nebo peřenoklaných úkrojků, které jsou tupě zašpičatělé. Celé listy jsou pak zabarveny do světle zelena.

Květenstvím této rostliny je úbor, který je v průměru 13 až 17 cm široký a skládá se z paprskujících bílých jazykovitých květů a terče, jenž je tvořen buď žlutými, nebo pouze bílými trubkovitými květy. Plodem řimbaby obecné je čihovitá, mírně prohnutá, přibližně 1 až 1,5 mm dlouhá nažka s výrazně bělavými žebry. [9, 10, 11, 12]

Obsažené látky

Nať a listy řimbaby obecné obsahují velké množství seskviterpenových laktonů, které byly dříve nazývány jako hořčiny, a také insekticidně působící pyrethrin. Zhruba 85 % obsažených seskviterpenů přitom tvoří parthenolid. Kromě toho se v rostlině nachází také vysoké procento sterolů a triterpenů, a to zejména v jejích kořenech.

Díky přítomnosti zmíněných seskviterpenů, ale také flavonoidů jsou pak této rostlině přisuzovány protizánětlivé účinky. Fenolické sloučeniny obsažené v řimbabě fungují jako antioxidanty, což znamená, že zachycují škodlivé volné radikály, čímž bojují proti oxidačnímu stresu, který je zodpovědný za rozvoj různých zánětlivých procesů v těle. [13, 14, 15, 16]

Jaké má kopretina řimbaba účinky?

Už od starověku se používala kopretina řimbaba na migrénu a jako lék ke snížení horečky. Lidoví léčitelé ji přitom pro tyto účely využívají i dnes. Některé studie prokázaly, že látky parthenolid a tanetin obsažené v řimbabě zastavují produkci prostaglandinů, což je skupina hormonů, které podporují rozvoj zánětu v organismu.

Zmíněný parthenolid dokáže podle jiných výzkumů inhibovat serotoninové receptory a bránit krevním destičkám v uvolňování zánětlivých molekul. Kromě toho údajně také zastavuje rozšiřování krevních cév v mozku a mírní křeče hladkého svalstva. Vedle schopnosti snižovat horečku a migrénu se ale řimbabě obecné přisuzují ještě další potenciální zdravotních přínosy, mezi které patří například:

Navíc se řimbaba obecná používá v tradičním léčitelství také při problémech s neplodností, menstruací nebo samotným porodem. Údajně má mimo to pozitivní vliv na léčbu lupénky, astmatu či tinnitu a dále se používá i při závratích, nevolnosti a zvracení. A nakonec podle některých výzkumů dokáže také tlumit bolesti zubů a žaludku.

Používáte přípravky z řimbaby?

Jak už tomu ale bývá, ne všechny studie výše uvedené účinky řimbaby obecné potvrdily. Zatímco některé vědecké výzkumy uvádí, že bylina pomohla u vzorku zúčastněných osob snížit frekvenci a intenzitu migrény, jiné experimenty tyto schopnosti neprokázaly. Navíc několik dalších studií tvrdí, že ačkoliv byly dané vlastnosti řimbaby zaznamenány, není o moc účinnější než placebo. K potvrzení zmíněných účinků je proto potřeba bylinu ještě více prozkoumat. [17, 18, 19, 20, 21, 22, 23]

Využití řimbaby obecné

Z kopretiny řimbaby se při výrobě různých produktů používají především listy, nicméně využít se dají prakticky všechny její části, které rostou nad zemí. Bylina se přitom v tradičním léčitelství obvykle zpracovává buď sušením a lyofilizací, nebo se užívá v čerstvé podobě. Dále se pak z drogy vyrábějí různé přípravky, mezi které patří:

  • řimbaba obecná tinktura,
  • řimbaba obecná čaj,
  • řimbaba obecná kapky,
  • řimbaba obecná tablety,
  • řimbaba obecná mast,
  • řimbaba obecná kapsle.

V kulinářství se tato rostlina na rozdíl od jiných bylinek moc nepoužívá, neboť má ostrou nahořklou chuť, extrakt z řimbaby obecné však najdete v některých kosmetických produktech. Doma si dokonce můžete sami vyrobit pleťové mléko z řimbaby. Jednoduše povaříte asi 20 minut hrst sušených listů řimbaby ve 300 ml mléka, tekutinu následně necháte vychladit, přecedíte do skleněné nádoby a uložíte do lednice. Mléko se pak aplikuje na suchou nebo aknózní pokožku.

Mochna husí uvolňuje hladké svalstvo a zmírňuje křeče. Někteří ji však považují za otravný plevel
Přečtěte si také:

Mochna husí uvolňuje hladké svalstvo a zmírňuje křeče. Někteří ji však považují za otravný plevel

Kromě toho kopretina řimbaba nachází uplatnění také jako přírodní insekticid. Pokud se chcete doma zbavit molů, pak zkuste nasypat do misky hrst sušené a nadrcené řimbaby, kokošky, hřebíčku, máty, meduňky, chmele a šalvěje. Směs umístěte do plátěných pytlíčků a rozvěste po místnostech nebo vložte do šatních skříní. [24, 25, 26]

Kopretina řimbaba: pěstování

Řimbabu obecnou je možné pěstovat ze semen, nebo si zakoupit její sazenice v zahradnictví. Rostlina se přirozeně vyskytuje na hlinitých půdách, které jsou mírně vlhké a bohaté na živiny. Je proto podle toho potřeba vybrat vhodné stanoviště pro její výsadbu. Vybrané místo by se mělo v ideálním případě nacházet na plném slunci, ale není to podmínka.

Přestože řimbabám vyhovuje slunné stanoviště, nemají rády příliš velké sucho a zároveň také špatně snáší přemokření. Pokud se danou rostlinu rozhodnete pěstovat, pamatujte na to, že je nezbytné dopřát jí pravidelnou zálivku, ale nesmíte to s ní přehánět. Zemina, v níž je řimbaba vysazena, by měla být dobře propustná a měla by disponovat neutrálním pH.

Na jeden metr čtvereční se pak vysazují přibližně 2 až 4 sazenice řimbaby. V případě, že vyséváte na záhon semena, je potřeba tak učinit zhruba v polovině května, když už nehrozí, že by venku přešla mrazem. Rostliny si ale můžete také předpěstovat v interiéru, a to přibližně 5 až 7 týdnů před posledními mrazíky. [27, 28, 29]

Zdroje: botany.cz, pladias.cz, bylinkyprovsechny.cz, biolib.cz, healthline.com, mountsinai.org, ncbi.nlm.nih.gov, webmd.com, medicalnewstoday.com, sciencedirect.com, mdpi.com, gardenerspath.com, plantura.garden

Co je to řimbaba obecná?
Řimbaba obecná nebo vratič řimbaba je název pro vytrvalou rostlinu z čeledi Asteraceae, která nachází uplatnění v lidovém léčitelství a zároveň se pěstuje také jako okrasná květina. Někdo si ji může splést s heřmánkem, jelikož má podobné květy. Tyto dvě bylinky se však od sebe na první pohled liší především svými listy.
Kde roste řimbaba obecná?
Řimbaba obecná se pěstuje v Severní Americe, Austrálii a v Evropě. Na evropském kontinentu se s ní setkáte zejména ve státech Středomoří a v Německu. Původně ale rostlina pochází z Kavkazu, Balkánu a Malé Asie. V České republice se nevyskytuje příliš hojně, ale můžete se s ní setkat na ruderálních stanovištích, v parcích, na hřbitovech nebo také na březích vodních toků.
Má řimbaba obecná léčivé účinky?
Mnoho vědeckých výzkumů prokázalo, že látky obsažené v řimbabě mají protizánětlivé účinky a pomáhají snižovat horečku a mírnit příznaky migrény. Některé zdroje také uvádějí, že tato bylina podporuje léčbu revmatoidní artritidy, některých kožních nemocí a zažívacích potíží. Nicméně existují také výzkumy, které tyto vlastnosti stoprocentně nepotvrdily.  
  • Žádné názory
  • Našli jste v článku chybu?
'; 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'; } }
'; 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 »