Porucha štítné žlázy za obezitu obvykle nemůže

21. 8. 2017

Sdílet

Za mojí tloušťku může porucha štítné žlázy, slýcháme často od nemocných. Ve skutečnosti jen málo obézních pacientů má takovou hormonální poruchu, která vede k velkým přírůstkům na hmotnosti.

Jen nepatrná část obézních pacientů má takovou hormonální poruchu, která vede k velkým přírůstkům na hmotnosti, prakticky se jedná o těžké poruchy funkce štítné žlázy, říká v rozhovoru dětská endokrinoložka Olga Magnová z Pediatrické kliniky FN Brno. Dá se poruchám se štítnou žlázou předcházet a je toto onemocnění plně léčitelné?

Jaká jsou v populaci nejčastější endokrinní onemocnění?

Rozhodně nejčastějším endokrinním onemocněním jak v dětské, tak v dospělé populaci je onemocnění štítné žlázy. Obezita jako taková bývá zřídka způsobena jen izolovanou hormonální poruchou. Dalším častým důvodem endokrinologického vyšetření u dětí je porucha růstu.

Přibývá takto nemocných pacientů? Čím to je – vyšší nemocnost, či lepší diagnostika?

Pacientů s onemocněním štítné žlázy přibývá velmi rychle. Je to dáno jednak samotným zvýšením incidence autoimunitních onemocnění v populaci, tak i zlepšením a dostupností diagnostiky. Laboratorní stanovení hladin hormonů štítné žlázy patří dnes mezi základní a běžně dostupné vyšetření i v ambulancích praktických lékařů. Velká část pacientů s onemocněním štítné žlázy je zachycena v rámci jiných vyšetření, nikoliv pro potíže spojené se štítnou žlázou. U dětí se často jedná o imunologické vyšetření z důvodu opakovaných onemocnění dýchacích cest, u dospělých se nález na štítné žláze zjistí při ultrazvukovém vyšetření cév na krku.

Jaká je příčina endokrinních nemocí?

Příčina endokrinních onemocnění je široká a pestrá. Pokud mluvíme o onemocnění štítné žlázy, je nejčastější příčinou autoimunitní proces, který poškozuje štítnou žlázu a ve svém důsledku může, ale nemusí, vést k poruše funkce štítné žlázy, ke změně její velikosti nebo struktury (uzly). Proč tolik narůstá počet autoimunitních onemocnění včetně postižení endokrinních žláz, je další a komplikovaná otázka. V minulosti častá snížená funkce štítné žlázy z důvodu nedostatku jódu je v dnešní době celoplošné jodizace soli onemocněním vzácným a spíše se jedná jen o lehčí poruchy u osob s veganským stravováním nebo u kojících žen.

I potraviny s vysokým obsahem strumigenů (zelí, košťáloviny) ve velkém množství mohou vést ke snížené funkci štítné žlázy. Ozáření štítné žlázy radioaktivním zářením (zevně nebo radiojód) je jednoznačně rizikovým faktorem pro vznik jak snížené funkce štítné žlázy, tak i nejvýznamnějším rizikovým faktorem pro vznik zhoubných nádorů štítné žlázy (ozáření krku pro zhoubné nádory). Některá nádorová onemocnění endokrinních žláz mají jednoznačnou, geneticky podmíněnou souvislost (mnohočetná endokrinní neplasie MEN) nebo některá vrozená onemocnění nadledvinek (kongenitální adrenální hyperplasie). I chemické látky v našem životním prostředí ovlivňují endokrinní procesy v lidském těle (lithium, ftaláty). O příčině mnoha dalších endokrinních onemocnění dosud příliš nevíme.

Jsou tato onemocnění plně léčitelná? Nakolik trvalá léčba omezuje běžný každodenní život pacientů?

Otázka léčitelnosti endokrinních poruch je dána podstatou onemocnění. Pokud hormony v těle chybí, umíme dnes dodávat do těla hormony štítné žlázy a nadledvinek, růstový hormon či pohlavní hormony v podobě tablet či injekcí. Doba podávání této substituční léčby se řídí nejen charakterem onemocnění, ale například i věkem pacienta. Některé poruchy mohou být přechodné, potom je doba léčby omezená, jiné poruchy jsou celoživotní a pacient je trvale závislý na dodávce hormonů do těla zvenčí. Některé poruchy léčíme jen v určitém věkovém období (pohlavní hormony nepodáváme před věkem puberty a v pozdním stáří). Léčení poruch se zvýšenou funkcí endokrinních žláz je komplexní, příčinou je totiž často nádor produkující hormon v nadbytku. Řešením může být operační zákrok, radiojód, zevní radioterapie nebo např. ozáření Leksellovým gama nožem u nádorů hypofýzy. Někdy také můžeme podávat léky, které dovedou snížit nadměrnou tvorbu hormonů v postižené tkáni (tyreostatika při zvýšené činnosti štítné žlázy).

Jak se nemoci štítné žlázy projevují?

Onemocnění štítné žlázy se mohou projevovat jak poruchou její funkce, změnou velikosti nebo struktury. Co se týče poruchy funkce, nejčastější poruchou je snížená funkce – hypotyreosa. Hormony štítné žlázy jsou nezbytné k udržení základních metabolických procesů v organismu. Nástup poruchy je pomalý, plíživý, nenápadný, často trvá i několik let, než dojde k diagnóze. Potíže jsou zcela nespecifické jako únava, ospalost, zimomřivost, suchá kůže a vlasy, snížená fyzická a psychická výkonnost, přibývání na hmotnosti, poruchy reprodukčních a sexuálních funkcí, snížený krevní tlak, zpomalené srdeční akce, u dětí se přidává zpomalení růstu a poruchy průběhu puberty.

Čtěte k tématu: Málokdo pozná příznaky poruchy štítné žlázy

Naopak u zvýšené činnosti štítné žlázy trvá pouze v řádu týdnů, než pacienta přivede toto onemocnění k lékaři, nejde jej totiž dlouho přehlížet. Nejčastější potíže jsou neklid, nervozita, nespavost, pocení, vysoký krevní tlak, bušení srdce, snížená fyzická výkonnost a úbytek na váze i při velké chuti k jídlu. Někdy bývá spojena i s očním postižením (endokrinní oftalmopatie). Nadměrně zvětšená štítná žláza (struma) může vést k polykacím a dechovým potížím z útlaku velkou masou. Uzly – změny ve struktuře žlázy – mohou být na krku i hmatné, ale pokud jsou malé, jsou zřetelné jen při sonografii. Ty malé obvykle subjektivní potíže vůbec nedělají a nebývají ani bolestivé. Etiologicky to mohou být zcela nezávažné koloidně-cystické uzly, stejně jako zhoubné či nezhoubné nádory. Diagnostickým výkonem je tenkojehlová biopsie a následné cytologické vyšetření buněčného nátěru.

Proč je porucha štítné žlázy nejčastější onemocnění?

Jsou rodiny, kde se vyskytuje autoimunitní onemocnění štítné žlázy ve více generacích a častěji než v jiných rodinách, může se jednat i o kombinovaný výskyt jiných autoimunitních chorob jako celiakie nebo artritida apod. Existuje tedy určitá genetická predispozice k onemocnění, se kterou se rodíme. U štítné žlázy však dosud nemáme dostupné vyšetření, které by zjistilo, zda tuto dispozici neseme. Ženy jsou náchylnější k onemocnění štítnice třikrát až pětkrát častěji než muži. Nicméně, i pokud máme tuto vrozenou predispozici, potřebujeme ještě spouštěč onemocnění – to může být viroinfekce, stres, radioaktivní záření, některé léky apod.

Co se stane, pokud se porucha růstu u dětí včas nezachytí a neléčí? Proč musí pacient brát léky trvale, přestože jeho výška je optimální?

Porucha růstu u dětí je opět velmi široká otázka. Patří sem jak děti s malým růstem, tak děti s vysokým růstem a také ty, které rostou nepřiměřeně vůči výšce svých rodičů. Hranice malých a velkých dětí je stanovena na základě populačních měření. V České republice bylo naposledy v roce 2001. Statisticky normální výšku má 95 % populace, 2,5 % je malých a 2,5 % nepřiměřeně vysokých. Příčiny malého vzrůstu jsou velmi pestré a ne vždy se jedná o léčebně ovlivnitelný stav. Jen malé procento malých dětí má léčitelnou poruchu růstu.

Celkem se léčí v České republice kolem patnácti set dětí růstovým hormonem, polovina z nich pro jeho nedostatek, ostatní pro jiné diagnózy. Malý vzrůst může být způsoben i například sníženou funkcí štítné žlázy a celiakií. V dospělosti pak léčíme ty pacienty, u nichž porucha přetrvává a neléčený stav by zhoršoval jejich zdravotní stav. Co se týká růstového hormonu, v dospělosti se léčí pacienti s významně těžším nedostatkem růstového hormonu než v dětském věku. Důvodem je metabolický účinek růstového hormonu na kardiovaskulární aparát, tukový metabolismus, skelet, svalstvo, fyzickou i psychickou výkonnost jedince.
Samozřejmě že malý vzrůst nemusí být jen zdravotní problém, je to problém i psychosociální. Okolí se k dětem chová dle jejich předpokládaného věku vzhledem k jejich výšce, takže když jsou děti výškou malé, chovají se k nim dospělí i jejich vrstevníci jako k dětem mladším, mají na ně nižší nároky, což pak vede k jejich další společenské izolaci.

Nakolik je obezita způsobena poruchou činnosti žláz a nakolik nekázní v životním stylu? Dala by se vyřešit úpravou stravy/pohybu?

Jen nepatrná část obézních pacientů má takovou hormonální poruchu, která vede k velkým přírůstkům na hmotnosti, prakticky se jedná o těžké poruchy funkce štítné žlázy a zvýšenou produkci nadledvinkového kortisolu. Část obézní populace nese mutaci některého genu vedoucího k obezitě. Tito pacienti jsou obézní již od časného dětství, vyšetření však není dostupné v běžné praxi. Nejčastěji se jedná o kombinaci polygenní dispozice a charakteru životního stylu. Můžeme diskutovat, nakolik svou roli hraje i životní styl (ať už strava, pohyb, stres) předávaný v rodině z pokolení na pokolení. Přibývání na váze může být i nežádoucím účinkem mnoha medikamentů (psychofarmaka, antiepileptika, kortikoidy). Prvním předpokladem k dlouhodobé, často celoživotní úpravě životního stylu je určitě pozitivní psychické nastavení, snaha, pevná vůle a optimismus. U dětí není schválena k používání žádná medikamentózní terapie obezity.

Jaká je nejlepší prevence?

I v endokrinologii platí, stejně jako v jiných oblastech medicíny: to jediné a nejdůležitější, co můžeme pro sebe udělat, je zdravý životní styl v celém svém obsahu. Nejzásadnější preventivní opatření v oblasti onemocnění štítné žlázy je jodizace kuchyňské soli, díky které došlo k vymizení nedostatku jódu v naší populaci a s tím i k vymizení onemocnění s nedostatkem jódu spojených.
Dvě závažné endokrinopatie jsou vyšetřovány v povinném novorozeneckém screeningu a časný záchyt nemocných dětí a jejich léčba zabrání rozvoji těžkého psychomotorického postižení, kretenismu, a může vést i k záchraně jejich života. Část tohoto vyšetření se provádí právě ve FN Brno.

Je endokrinologie atraktivním oborem? Je dostatek endokrinologů?

Endokrinologie není u nás, stejně jako jinde ve světě, zrovna populární či lukrativní obor a nedostatek endokrinologů je v celé republice. Každý to zjistí bohužel velmi rychle, když se pokusí objednat k endokrinologovi, čekací doby jsou často několik měsíců. Co se týče dětské endokrinologie, tak v Brně jsme pouze dvě lékařky v oboru dětské endokrinologie (druhou je MUDr. Novotná, Ph.D.) a zabezpečujeme péči o dětské pacienty z Brna i okolí a současně také vysoce specializovanou péči pro celý Jihomoravský kraj.

MUDr. Olga Magnová

Absolventka Lékařské fakulty Masarykovy univerzity Brno obor dětské lékařství. Diagnostikuje a léčí onemocnění štítné žlázy, provádí vyšetření zaměřené na poruchu růstu a pubertálního vývoje při nadváze a obezitě, vyšetření při dalších zdravotních problémech, u kterých je doporučeno endokrinologické vyšetření.

Zdroj: FN Brno

Autor článku

Všeobecné dotazy, připomínky a tipy směřujte na adresu [email protected].

Tiskové zprávy zasílejte na e-mail [email protected].

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