Nesprávná hladina estrogenu se může projevit nepravidelnou menstruací i padáním vlasů. Jaká je léčba?

19. 5. 2022 7:30
přidejte názor

Správné hladiny estrogenu jsou nezbytné především pro zdravý ženský reprodukční systém, ale mají vliv i na mnoho dalších funkcí organismu, jako je vývoj sekundárních pohlavních znaků, hustota kostí nebo regulace nálady a vývoj mozku. Nízká hladina estrogenu se může projevit například nepravidelnou menstruací a návaly horka, zatímco vysoké hladiny může signalizovat padání vlasů či přibírání na váze. Zajímá vás, jaké jsou možnosti léčby?

Co je estrogen a jaké má funkce?

Co se dozvíte v článku
  1. Co je estrogen a jaké má funkce?
  2. Co ovlivňuje hladinu estrogenu?
  3. Nedostatek estrogenu: příznaky
  4. Vysoká hladina estrogenu: příznaky
  5. Estrogen u mužů
  6. Jak zjistit hladinu estrogenu?
  7. Jak zvýšit estrogen?
  8. Léčba estrogenové dominance

Estrogeny jsou steroidní hormony, které se označují jako ženské hormony, přestože se v malé míře vyskytují i u mužů. Tři hlavní druhy estrogenů jsou estradiol, estriol a estron. Tyto hormony jsou u žen produkovány vaječníky a hrají zásadní roli v ženském reprodukčním systému, nicméně jejich význam v organismu je daleko větší.

Estrogeny mají na svědomí vývoj sekundárních pohlavních znaků, například širších boků a růst prsou. Dále ovlivňují menstruační cyklus a umožňují ženám otěhotnět. Významnou roli rovněž hrají ve vývoji kostí (spolu s vápníkem a vitamínem D), růstu vlasů a v regulaci nálady. Tento hormon také významně ovlivňuje vývoj a strukturu vašeho mozku.

Hlavním estrogenním steroidem je estradiol. Právě tento estrogen je sledován u žen s poruchou plodnosti a menstruačního cyklu, u vzácných tumorů a poruch syntézy estrogenů. Estradiol spolu s jinými estrogeny má na svědomí zadržování vody a soli a také má anabolický účinek na metabolismus bílkovin. [12]

Co ovlivňuje hladinu estrogenu?

Kolísání hladiny estrogenu je naprosto přirozené. Estrogen stoupá v období puberty a klesá s blížící se menopauzou. Hladiny tohoto hormonu se rovněž odvíjí od fází menstruačního cyklu. V době ovulace dosahují maxima, aby se tělo připravilo na těhotenství, a následně se snižují s příchodem menstruace.

Vzhledem k tomu, že estrogen je produkován vaječníky, může jakýkoliv stav související s tímto orgánem ovlivnit produkci estrogenu. Pokud jsou hladiny estrogenu trvale nízké, ženy mohou mít problém otěhotnět. Důvodem mohou být tyto faktory:

  • nadměrná fyzická aktivita,
  • poruchy příjmu potravy,
  • předčasné selhání vaječníku v důsledku toxinů či autoimunitního onemocnění,
  • Turnerův syndrom,
  • onemocnění ledvin.

Pokud jsou hladiny estrogenu naopak trvale vysoké, mohou signalizovat zdravotní stav, který vyžaduje lékařské vyšetření. Na vině mohou být následující jevy:

Nedostatek estrogenu: příznaky

Nízká hladina estrogenu je běžná u dívek, které ještě nedosáhly puberty a dále u žen, které se blíží menopauze. Nedostatek estrogenu se i přesto může rozvinout v jakémkoli věku, což může vést k potížím s otěhotněním. Typické příznaky zahrnují následující:

Vysoká hladina estrogenu: příznaky

Pokud jsou hladiny estrogenu ve vašem těle trvale zvýšené, mohou se u žen objevit následující symptomy:

  • nadýmání,
  • snížená chuť na sex,
  • nepravidelná menstruace,
  • oteklá a citlivá prsa,
  • změny nálady a bolesti hlavy,
  • úzkosti a záchvaty paniky,
  • přibývání na váze,
  • padání vlasů,
  • zesílené příznaky premenstruačního syndromu (PMS),
  • problémy se spánkem,
  • ospalost nebo únava,
  • problémy s pamětí,
  • fibrocystické bulky ve vašich prsou. [7]

Estrogen u mužů

Přestože je estrogen nazýván ženským hormonem, i v mužském organismu má své zastoupení. Vyvážené hladiny estrogenu u mužů hrají důležitou roli v sexuální funkčnosti a plodnosti. Konkrétně je estrogen zodpovědný za tvorbu zdravého spermatu.

Pokud jsou ovšem hladiny estrogenu u muže příliš vysoké, mohou se objevit problémy s plodností. Vysoký estrogen u mužů se nejčastěji projevuje erektilní dysfunkcí a gynekomastií. Může být rovněž příčinou ukládajícího se tuku v oblasti břicha. [8, 9]

Jak zjistit hladinu estrogenu?

Pokud se u vás objevily některé z výše uvedených příznaků naznačujících trvale nízké nebo vysoké hladiny estrogenu, je nutné obrátit se na vašeho lékaře, který vám odebere vzorek krve a zašle jej do laboratoře k rozboru. Případně můžete vyhledat přímo některou z laboratoří, které tato vyšetření poskytují. V současné době jsou na trhu rovněž k dostání domácí testy estrogenu, nicméně výsledky nebudou přesné jako z laboratoře. [10, 11]

Trápí vás abnormální hladina estrogenu?

Jak zvýšit estrogen?

Ne každá žena nutně potřebuje podstoupit léčbu ke zvýšení estrogenu, tedy pokud neplánuje těhotenství nebo ji netrápí obtíže spojené s nižší nebo naopak vyšší hladinou estrogenu. Prozatím bohužel neexistuje mnoho výzkumů, které by prokázaly zvýšení hladin estrogenu prostřednictvím přírodních prostředků. Co však může v první řadě pomoci, je změna životního stylu. A to především následující:

  • dostatek spánku, tedy alespoň 7 až 9 hodin denně: spánek zajišťuje správnou produkci hormonů v těle,
  • omezení stresu: stresové hormony mohou ovlivnit hladiny estrogenu,
  • mírné cvičení: nadměrná fyzická aktivita vede ke snížení estrogenu,
  • dostatečný příjem zdravé stravy: podváha a nízký příjem kalorií vede k nízkým hladinám estrogenu.

Hormonální léčba

Další možností je podstoupit substituční hormonální léčbu, která spočívá v užívání syntetického estrogenu, obvykle ve formě estrogenových tablet. Ty se předepisují zejména pro léčbu vedlejších příznaků menopauzy. Estrogenový krém či kroužek (vaginální estrogeny) se využívají zejména k léčbě vaginální suchosti a bolestivého pohlavního styku.

Přírodní estrogeny v jídle: fytoestrogeny

Fytoestrogeny patří mezi tzv. xenoestrogeny, což znamená, že nejsou pravými hormony, ale mohou je ovlivnit. Většinou působí antioxidačně, mohou mít vliv na hustotu kostí, působit preventivně proti vzniku nádorů, jako je rakovina prsu, a snížit riziko kardiovaskulárních onemocnění.

Bylo ovšem prokázáno, že fytoestrogeny mohou mít estrogenní i antiestrogenní účinky. Jinými slovy, zatímco některé mohou hladiny estrogenu zvýšit, jiné ho mohou naopak blokovat. A právě z tohoto důvodu představují kontroverzní téma v oblasti zdraví. Prozatím však nebylo provedeno dostatečné množství výzkumů, které by účinky fytoestrogenů na hladiny estrogenu prokázaly. Mezi přírodní fytoestrogeny patří následující:

  • lněná semínka,
  • sójové boby,
  • tofu,
  • tempeh,
  • sušené ovoce,
  • sezamová semínka,
  • česnek,
  • broskve,
  • bobule (jahody, maliny apod.),
  • pšeničné otruby,
  • brukvovitá zelenina. [12, 13, 14]

Léčba estrogenové dominance

Léčba zvýšeného estrogenu závisí na základní příčině, proto je v první řadě důležité podstoupit lékařské vyšetření a zjistit, co převahu estrogenu v těle způsobuje. Na základě toho je pak možné určit případnou léčbu. U estrogenové dominance, která není způsobena konkrétním zdravotním stavem, mohou lékaři doporučit změnu životního stylu. Můžete tedy vyzkoušet následující:

  • zvýšit příjem omega-3 mastných kyselin ve stravě nebo zvážit užívání doplňků stravy,
  • jíst více vegetariánské stravy,
  • jíst více sóji, lněného semínka a brukvovité zeleniny, jako je brokolice a kapusta,
  • udržovat zdravou hmotnost a soustředit se na pravidelný pohyb,
  • pokusit se snížit stres,
  • omezit konzumaci alkoholu
  • vyhýbat se jakýmkoli přírodním nebo bylinným přípravkům, které mohou zvýšit estrogen. [15]

Zdroje: cwhwichita.com, vaselaboratore.cz, labtestsonline.cz, healthline.com, my.clevelandclinic.org, bezpecnostpotravin.cz, nzip.cz, stefajir.cz, medicalnewstoday.com

  • Žá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 »