Obezita ohrožuje stále větší množství lidí. Jaká je vhodná léčba?

13. 6. 2019 9:00
2 nové názory

Obezita patří mezi významné zdravotní problémy naší populace a někdy je také právem označována jako epidemie třetího tisíciletí. Jedná se v podstatě o chronické onemocnění, kdy se pacientům v těle ukládá nadměrné množství tukové tkáně, což může vést ke vzniku dalších závažných zdravotních komplikací. Léčba musí být vždy komplexní a vyžaduje velké úsilí ze strany pacienta.



Definice obezity

Obezita, které se česky říká také otylost, se obvykle definuje jako zvýšené množství tukové tkáně (a tím pádem i zvýšená tělesná hmotnost). Tento stav vzniká ve chvíli, kdy člověk přijímá mnohem více energie, než je schopný vydat. Nadbytečný příjem se později projeví tak, že se nespotřebovaná energie promění v tukové buňky.

Ačkoliv si někteří lidé myslí, že obezitou trpí hlavně obyvatelé vyspělých států, v současné době rapidně přibývá případů obezity také v rozvojových zemích. Jedná se tedy o celosvětový problém, který významně souvisí se snadnou a rychlou dostupností stravy (což zahrnuje třeba i různé sladké pokrmy a nápoje nebo také hodně slaná a tučná jídla), s leností a stále se snižující pohybovou aktivitou.

Příčiny vzniku obezity

Na vzniku obezity se obvykle podílí celá řada faktorů, nejčastěji se však jedná o kombinaci nevhodného životního stylu, genetických předpokladů a působení okolí. Vliv mohou mít také některé stresující životní situace, jako je například období dospívání (puberta), těhotenství, klimakterium, nástup do sedavého zaměstnání nebo třeba odchod do důchodu.

Co hraje roli při vzniku obezity?

  • Nadměrný příjem potravy a kalorií (přejídání)
  • Nevhodné složení stravy
  • Nedostatek pohybu
  • Nedostatek spánku
  • Hypofunkce štítné žlázy
  • Hormonální příčiny (mateřství, nadbytek estrogenů…)
  • Působení některých léků
  • Vliv rodiny a okolí

Ačkoliv při rozvoji obezity často hrají významnou roli právě genetické faktory, lékaři zdůrazňují, že tyto nechtěné vlohy ještě samy o sobě neznamenají, že pacient musí být nutně obézní. Je pouze na něm, zda sklony k obezitě podpoří špatným životním stylem, nebo se bude snažit všem rizikovým faktorům vyhnout.

Jak správně zjistit stupeň obezity?

Obezita se dělí do několika stupňů či kategorií. Existují různé způsoby, jak tento stav definovat a zjistit, zda má konkrétní člověk normální hmotnost, trpí nadváhou nebo dokonce obezitou.

Body Mass Index

Obezitu můžeme na první pohled celkem jasně poznat. Její míra se ovšem určuje hlavně podle indexu tělesné hmotnosti neboli BMI (z anglického body mass index). Abyste tuto hodnotu spočítali, je nutné vydělit tělesnou hmotnost v kilogramech druhou mocninou výšky v metrech. Pro bělošskou evropskou populaci jsou výsledné hodnoty BMI definovány takto:

  • BMI 18,5‒24,9 – normální tělesná hmotnost
  • BMI 25,0‒29,9 – nadváha
  • BMI 30,0‒34,9 – obezita 1. stupně
  • BMI 35,0‒39,9 – obezita 2. stupně
  • BMI vyšší než 40,0 – obezita 3. stupně (morbidní obezita)

Index tělesné hmotnosti se ovšem dá obecně považovat pouze za statistický nástroj, který sám o sobě ignoruje velké množství dalších důležitých faktorů, jako je například stavba těla konkrétního člověka. Výslednou hodnotu je navíc nutné interpretovat také v závislosti na věku a pohlaví pacienta.

Další způsoby měření obezity

Kromě BMI jsou ovšem důležité také další faktory, jako je například rozmístění tukové tkáně na těle. Tam totiž mohou probíhat škodlivé zánětlivé procesy, které lidský organismus ohrožují. Nejrizikovější je nitrobřišní obezita neboli abdominální obezita, kdy dochází k hromadění tuku v břišní dutině (tzv. viscerální tuk). Takový typ postavy se poté lidově nazývá „jablko“.

Pokud se člověku tuk ukládá především na bocích a zadku, jedná se o typ „hruška“. Tento stav, který se označuje také jako gynoidní obezita, můžeme pozorovat především u žen. Lidé ho vnímají hlavně jako estetický nedostatek, jelikož nepředstavuje tak velké riziko vzniku zdravotních komplikací jako předchozí typ.

Orientačním ukazatelem obezity a nadváhy je také obvod pasu. O obezitu se jedná ve chvíli, kdy obvod mužského pasu přesáhne hranici 102 centimetrů, u žen je tato hodnota nastavená na 88 centimetrů. Mezi další faktory, které je nutné brát v potaz, patří třeba poměr obvodu pasu k obvodu hýždí. Dále se provádí přesnější měření obsahu tělesného tuku a tloušťky podkožních tukových vrstev.

Možné komplikace a následky

Obézní pacienti se často straní společnosti, a to buď zcela záměrně nebo nedobrovolně. S tím samozřejmě souvisí různé problémy, jako je sociální izolace, snížené sebevědomí, samota či deprese. Obezita s sebou ale navíc přináší také závažné zdravotní komplikace. Mohou se rozvinout například tato onemocnění:

Léčba obezity

Jelikož se na vzniku obezity většinou současně podílí mnoho různých faktorů, terapie musí být vždy komplexní a vyžaduje především plné nasazení pacienta samotného. Léčbou obezity se zabývá obor jménem obezitologie, kde spolupracuje celá řada lékařů, jako jsou například:

  • Ošetřující lékař
  • Diabetologové
  • Nutriční specialisté
  • Chirurgové
  • Gastroenterologové
  • Psychologové

Konzervativní léčba obezity se většinou zahrnuje celkovou změnu životosprávy, individuálně sestavený jídelníček a různá pohybová doporučení, kterými by se měl obézní pacient řídit. K tomu se přidává také podpůrná psychoterapie zaměřená na to, aby si pacient zvykl na trvalé změny životního stylu, které s léčbou obezity a redukcí tělesné hmotnosti souvisí.

Někdy lze léčbu obezity doplnit také užíváním léků, které se nazývají antiobezika. V České republice jsou dostupné dva takové léky. První z nich s účinnou látkou fentermin snižuje pocit hladu, druhý obsahuje látku orlistat a ovlivňuje trávení tuků. Je ovšem nutné dobře zvážit také nežádoucí účinky těchto léků.

U pacientů trpících 3. stupněm obezity lékaři někdy volí také chirurgickou léčbu. Jedná se konkrétně o oblast chirurgie jménem bariatrie, kde se výkony provádí laparoskopicky na žaludku nebo střevech pacienta. Nejčastěji je to bandáž žaludku, tubulizace žaludku nebo sleeve resekce.

Obezita a drastické diety

Každý z nás určitě někde slyšel doporučení na různé zázračné diety, které člověku zaručeně pomohou zbavit se tělesného tuku a opět ho dostanou do perfektní kondice. Takových „zaručených“ rad jsou plné internetové stránky, televizní vysílání i diskuse v rádiích. Obezity se ovšem nelze zbavit ze dne na den.

Žádné drastické diety, hubnoucí koktejly, speciální pilulky nebo čaje, které slibují rychlý váhový úbytek, ve většině případů nepomáhají. Pacienti nedokáží diety držet dostatečně dlouho, mají kvůli nim ještě větší problémy a když se vrátí k původnímu jídelníčku, opět přiberou a někdy se tak dostanou na ještě vyšší váhu, než byla ta původní. Organismus si navíc na hladovění postupně zvykne a metabolismus přizpůsobí tak, aby šetřil energii.

Obezita u dětí

Obezita se samozřejmě netýká pouze dospělých, ale stále častěji se s ní potýkají také menší i větší děti. Většinou se jedná o alimentární obezitu, kterou způsobuje nadměrný příjem energie a nedostatek pohybu. Kromě vážných zdravotních komplikací, které může dětská obezita způsobit, je často také zdrojem psychických problémů a depresí. Je proto nutné začít tuto situaci řešit včas a poradit se o vhodném řešení s ošetřujícím lékařem dítěte nebo jiným specialistou.

Obezita v České republice

V naší zemi trpí různou mírou obezity přibližně 30 % obyvatel. Pokud bychom ale chtěli připočítat také pacienty s nadváhou, dostaneme se u žen na 68 % a u mužů dokonce na 72 %. Tato čísla jsou velmi alarmující, mezi Evropany totiž patří náš národ mezi nejotylejší. Stejné je to i u českých dětí, kde počet obézních jedinců každoročně stoupá.

Lenka Králová (neregistrovaný)
Jsem po transplantaci jater 2roky před transplantaci jsem měla 84kg nyní váha 122 užívám prednosil myfenax ursusan zefix mám už druhou poradkyni na výživu a váha nejde dolů hýbat se moc nemohu mám neuropatie dolních končetin můžete mi poradit jak se zbavim nadváhy děkuji za odpověď
MUDr. Thai Bao Han (neregistrovaný)
Dobrý den, paní Králová, hubnutí je poměrně jednoduchá rovnice - příjem a výdej kalorií. Pokud se nemůžete moc hýbat, jezte pouze tolik kalorii, kolik je váš bazální metabolismus. S tím by měla pomoci dobrá nutriční terapeutka, výborné jsou při III. interně VFN Praha.
  • 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 »