Aromaterapie léčí, ale nesmíte koupit olej se syntetikou

Sdílet

Autor: Isifa.cz
Člověk zachytí vůně až na vzdálenost čtyř metrů a rozpozná tisíc druhů. Aromaterapie využívá přirozených vůní k prevenci i samotné léčbě. Je ale třeba dýchat zhluboka a mít vhodný olej.

Nádherné vůně květů, listů, jehličí, pryskyřice, kůry a plodů, to je aromaterapie. Je to jedna z nejpříjemnějších metod k obnovení celkového zdraví. Aromaterapie využívá přirozených vůní k prevenci i samotné léčbě onemocnění, k harmonizaci těla i duše a ke zvýšení celkového pocitu pohody.

Co je to vlastně aromaterapie? Rostliny, keře i stromy mají ve svých květech, listech, kořenech, semenech, kůře či smůle uloženy vonné látky ve formě kapiček. Zkrátka voní proto, že obsahují těkavé aromatické látky – vůně, které uvolňují do okolního prostředí. Tyto vonné látky nazývané éterické oleje nebo silice slouží rostlině k zajištění jejího rozšíření a k navázání kontaktu s okolím. Obsahují její typické rysy, jsou podstatou a duší rostliny.

Člověk rozpozná tisíc vůní

Vůně působí na člověka přes nos a kůži. Čich je nejcitlivější smysl člověka. Výzkumy dokázaly, že daleko předčí i chuťové vjemy. Část mozku, která je centrem uvědomělého myšlení, se vyvíjela právě z místa vzniku čichu. Člověk je schopen zachytit vůně až na vzdálenost čtyř metrů a rozpoznat jich asi tisíc druhů. Oblast nosu, která je citlivá na aromata, se nachází v horní části nosní dírky v tzv. čichové štěrbině. Při normálním klidném dýchání se k ní dostane jen malá část vdechovaného vzduchu.

Když tedy chceme skutečně ucítit vůni, musíme udělat několik hlubokých nádechů. Vdechováním příslušného éterického oleje se v našem těle nepřímo uvolňují neurochemikálie, například endorfiny, encefalin, adrenalin a noradrenalin. To znamená, že náš čich funguje bez cenzury velkého mozku. Díky malé molekulové hmotnosti se dostávají účinné látky ze silic do tkání, lymfy, svalstva a krevního oběhu. Asi po patnácti minutách od aplikace je lze prokázat v krvi. Při vdechování se esence dostanou do průdušek, plicních sklípků a krevních kapilár a tímto způsobem pak do jednotlivých orgánů.

To, že biologické látky pronikají i kůží, si můžeme ověřit jednoduchým experimentem. Natřeme si chodidla éterickým olejem z levandule a po chvíli budeme její vůni cítit v námi vydechovaném vzduchu. Aromatické látky se z těla vylučují dvěma cestami – ledvinami a dýchacími orgány.

Čtěte dále: Bojujte s bacily pomocí aromaterapie

Jak správně vybrat éterické oleje

Léčivých vlastností éterických olejů můžeme využívat všichni, od novorozenců po seniory. Důležité je však vědět, že některé silice nejsou vhodné při určitých onemocněních, v těhotenství, v dětském věku…

Před zahájením léčby vůněmi je dobré stanovit si vlastní diagnózu, abychom správně léčili příznaky. Dále je nutné znát některé údaje o jednotlivých olejích – například epileptici by rozhodně neměli požívat yzop, kafr, rozmarýn, šalvěj a tymián. Při ledvinových potížích se nehodí kmín, jalovec, santal. Při opalování zase třezalka, limetka, citron, andělika, bergamot, řebříček, pomeranč a cedr. Ovlivňují totiž citlivost kůže na sluneční světlo, a proto jsou označovány jako fotosenzibilní. V těhotenství by se nastávající maminky měly vyhnout éterickým olejům z kafru, šalvěje, bazalky, myrty, rozmarýnu, pelyňku, dobromysly, yzopu, majoránky, petržele, routy. Za oleje nevhodné pro děti do věku pěti let jsou považovány máta a kafr.

Silice skladujeme na tmavém místě za teploty od 0 do 18 stupňů Celsia a mimo dosah dětí.

Nevhodné éterické oleje

  • pro epileptiky: yzop, kafr, rozmarýn, šalvěj, tymián
  • při ledvinových potížích: kmín, jalovec, santal
  • při opalování: třezalka, limetka, citron, andělika, bergamot, řebříček, pomeranč, cedr
  • v těhotenství: kafr, šalvěj, bazalka, myrta, rozmarýn, pelyněk, dobromysl, yzop, majoránka, petržel, routa
  • pro děti do 5 let: máta, kafr

Poslouchejme svoji intuici – při výběru silice je dobré se řídit i vlastními instinkty, v tomto případě čichem. Vyberte si olej, jehož vůně je vám příjemná.

Léčivou sílu mají jen čisté přírodní oleje

Éterické oleje si můžeme koupit v bylinkářstvích, obchodech se zdravou výživou, přes internet nebo i lepších drogeriích. Na trhu je spousta firem, které tyto produkty nabízejí. Ale pozor, ne vždy se jedná o kvalitní výrobek.

Proto je při nákupu nutné dbát na to, aby na lahvičce či obalu bylo uvedeno, že se jedná o olej 100% přírodní. Silice, u níž je například uveden pouze údaj 95 %, nikdy nekupujte. Zbylých 5 % jsou syntetické dráždivé přísady, které naopak mohou způsobit migrénu, alergii či astmatický záchvat. Dále nás etiketa informuje, zda můžeme olej nanášet neředěný na kůži, jestli je vhodný k masážím nebo pouze k inhalaci do aromalampy.

Přečtěte si: Alchymie aromaterapeutické masáže

Vůně a jejich účinek

  • Uklidňující vůně – levandule, ylang-ylang, meduňka, santalové dřevo, mandarinka, bergamot, heřmánek
  • Stimulující vůně – rozmarýn, cedr, citron, pomeranč, máta, zázvor
  • Dezinfekční vůně – myrta, eukalyptus, levandule, tea tree, citron, smrk, jedle, borovice, šalvěj, fenykl, anýz

Jak kombinovat éterické oleje

Éterické oleje se dají velmi dobře míchat do směsí. I zde však platí určitá pravidla:

  • Nikdy nekombinujeme mnoho olejů najednou.
  • Aromaterapeutická směs nemá obsahovat více než 5 silic.
  • Citrusové vůně se výborně hodí k vůním jehličnanů.
  • Levandule se dobře pojí se všemi éterickými oleji, dokonce zjemňuje vůni.
  • Všechny květinové vůně se navzájem dobře snášejí.
  • Přidáním santalového dřeva vůně ztrpkne.

Použití aromalampy je jednoduché

Nejoblíbenější způsob používání éterických olejů je vypařování v aromalampě. Olej se smíchá s vodou a pod ním se zapálí svíčka, která směs ohřívá a napomáhá jejímu vypařování. Lampa tak nejen šíří místností nádhernou vůni, ale také obohacuje vzduch účinnými látkami ze silice, které pak v organismu rozvinou svůj účinek.

Jak používat aromalampu

  • Aromalampu stavíme vždy na bezpečné místo a z dosahu dětí. Nikdy ji nenecháváme bez dozoru.
  • Zpočátku je vhodnější nalít do misky teplou vodu (nesmí mít více než 50 stupňů Celsia), do ní nakapeme příslušný éterický olej, v množství 1 až 2 kapky na m2 místnosti, pak teprve zapálíme čajovou svíčku.
  • Teplota vody v lampě nesmí dosáhnout bodu varu, protože by se zničily přirozené léčivé vlastnosti éterického oleje.
  • Po použití aromalampu omyjeme mýdlem a nakonec opláchneme octem.

Tipy do aromalampy

Čisticí éterická směs

Lze použít jako prevenci i pro samotnou léčbu nachlazení, chřipky, zánětu průdušek či zápalu plic. Aromaterapií si můžeme výrazně ulevit a zkrátit tak dobu rekonvalescence.

Potřebujeme: 3 lžíce vlažné vody, 2 kapky levandule, 2 kapky eukalyptu a 2 kapky čajovníku (tea tree), čajovou svíčku

Postup: Do misky v aromalampě nalijeme vodu, přidáme silice, zapálíme svíčku a necháme provonět místnost. Tato voňavá terapie výborně vyčistí vzduch a ochrání nás před bacily.

Uklidňující směs

Potřebujeme: 3 lžíce vlažné vody, 2 kapky levandule, 1 kapku meduňky, 2 kapky mandarinky, čajovou svíčku

Směs na zvýšení koncentrace

Potřebujeme: 3 lžíce vlažné vody, 3 kapky rozmarýnu, 2 kapky citronu, čajovou svíčku

Aromamasáž uvolní všechny smysly

Svíčky, vůně bylinek a jemné dotyky…, to vše je kouzlem masáže. Voňavá masáž v sobě spojuje dvě metody – samotnou masáž a aromatickou proceduru. Je to jedna z nejúčinnějších metod aromaterapie, protože zabezpečuje přímé pronikání aromatických látek do krevního a lymfatického řečiště. Kontaktem s nervovými zakončeními v pokožce vyvolává rychlou reakci nervové soustavy, což se projeví tím, že dotyčný se už v průběhu procedury uvolňuje a postupně se tak zbavuje veškerého napětí. Masáž má velmi příznivé účinky na psychiku, uklidňuje a vyvolává pocit tepla a bezpečí, což je důležité hlavně u dětí. Vzájemná rodinná masáž zlepšuje vztahy, sbližuje rodiče s dětmi a představuje unikátní způsob komunikace beze slov, pouze dotyky. K těmto účelům s oblibou používám éterické oleje z levandule, mandarinky, hřebíčku, skořice či heřmánku.

K masáži používáme buď hotové olejové masážní směsi nebo si můžeme vyrobit vlastní. Připravíme si ji tak, že do 2 lžic panenského olivového, mandlového, sezamového či lněného rostlinného oleje přidáme 2–4 kapky příslušného éterického oleje. Dětem dáváme poloviční množství silice.

Tipy pro aromamasáže

Uvolňující masážní olejíček

Potřebujeme: 10 lžic mandlového oleje, 4 kapky éterického oleje z levandule, 2 kapky ylang-ylangu, 2 kapky meduňky, 2 kapky mandarinky

Postup: Všechny uvedené přísady smícháme dohromady. Vzniklou směs nanášíme na pokožku celého těla a jemnými krouživými pohyby masírujeme.

Masážní olej pro bolavé svaly a klouby

Potřebujeme: 10 lžic mandlového oleje, 2 kapky levandule, 4 kapky rozmarýnu, 2 kapky jalovce, 2 kapky eukalyptu

Postup: Všechny ingredience smícháme, hotovou směsí masírujeme bolavá místa.

K aromakoupeli nesmíme používat neředěný olej

Vyhřátá koupelna, voňavá voda zjemněná vzácným olejem, svíčky, relaxační hudba a čas jen pro sebe… Jednou z nejpříjemnějších možností využití aromaterapie je aromakoupel. Při ní přijímá účinné látky pokožka a současně dochází k inhalaci léčivé vodní páry.

Jak si připravíte aromakoupel? Na tuto proceduru nesmíme používat čisté neředěné éterické oleje, protože se nerozpouštějí ve vodě, plavou na hladině, mohly by se tak dostat do očí, úst, genitálií a způsobit podráždění. Vždy je nutné je smíchat s emulgátorem, což je například mléko, smetana, med, mořská sůl či panenský rostlinný olej. Při přípravě postupujte následovně: do 2 lžic vybraného emulgátoru přidáme 4–6 kapek silice a promícháme. Dětem dáváme poloviční množství éterického oleje. Aromakoupel by měla trvat 15 minut. Koupele můžeme provádět celkové nebo i místní (rukou, nohou, sedací). Mezi moje nejoblíbenější rostlinné silice do koupele patří levandule, mandarinka, meduňka či jalovec.

Tipy pro aromakoupele

Koupel na dobrou noc

Potřebujeme: 2 lžíce oleje nebo smetany, 3 kapky levandule, 1 kapku meduňky, 2 kapky ylang-ylangu

Postup: Přísady smícháme dohromady, vzniklou směs přidáme do vody ve vaně a může začít příjemný relax.

Regenerační koupel

Potřebujeme: 2 lžíce smetany, 2 lžíce medu, 2 lžíce mandlového oleje, 6 kapek levandule

Postup: Všechny uvedené ingredience promícháme a přilijeme od vody ve vaně. Po této koupeli bude pokožka nádherně hebká.

Sedací koupele

Působí velmi hojivě. Jsou účinnou procedurou při nejrůznějších zdravotních potížích. Sedací koupel při infekcích močového měchýře, gynekologických potížích (především mykózách) a hemoroidech:

Potřebujeme: 2 lžíce mořské soli, 2 kapky čajovníku, 2 kapky levandule

Postup: Přísady smícháme a přidáme do teplé vody v nádobě. Sedací koupel by měla trvat 10 minut. Opakujeme jí 1–2× denně po dobu 7 dní.

Důvěřujme přírodě. V aromaterapii platí pravidlo, že „léčení musí být příjemné“.

Galerie: AROMATERAPEUTICKÁ MASÁŽ z rukou profesionála

Autor článku

Přírodní terapeutka, zabývá se fytoterapií, aromaterapií, celkově zdravým životním stylem. Autorka několika knih…

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