Záchvatovité přejídání jde ruku v ruce s nadváhou i obezitou. Jaké jsou jeho příčiny?

6. 4. 2021 13:54
přidejte názor
Autor: Shutterstock

Pocit přeplněného břicha pravděpodobně zažil každý z nás, a to například během vánočních svátků či rodinných oslav, kdy člověk v kratším čase spořádá výrazně více jídla než obvykle. Pokud se jedná o výjimečnou situaci, není se čeho bát. Problém nastává v momentě, kdy se u vás záchvatovité přejídání objevuje v pravidelných intervalech. Pak totiž mluvíme o poruše příjmu potravy, která může mít negativní dopad na naše zdraví, ale i sociální život.





Ačkoli to spousta lidí netuší, záchvatovité přejídání (BED) se řadí mezi závažná psychická onemocnění a podobně jako anorexie a bulimie představuje jednu z poruch příjmu potravy. Jedná se o nemoc, která je charakteristická opakovanými epizodami nekontrolovatelného příjmu potravy. Postižený během krátké doby zhltá výrazně větší množství jídla, než by během podobné doby normálně snědli jiní lidé, což vede k výčitkám, studu, úzkosti i pocitu znechucení nad svým chováním.

Podobně jako jiné poruchy příjmu potravy, i tato postihuje častěji ženy, současně se však jedná o nejčastější poruchu příjmu potravy u mužů. První příznaky se zpravidla objevují u dospívajících a mladých dospělých ve věku kolem 20 let. Nemoc ale může vzplanout v jakémkoli věku a může trvat dlouhou řadu let.

Podle odhadů postihuje BED zhruba 2 % celkové populace, pravděpodobně jím ale trpí daleko více lidí. Ne všichni pacienti totiž vyhledají pomoc, onemocnění je navíc poměrně obtížné diagnostikovat, a tak se stává, že jej lékaři vůbec nerozpoznají.

Příčiny záchvatovitého přejídání

Přesné příčiny záchvatovitého přejídání nejsou úplně známy, na vzniku obtíží se ale pravděpodobně podílí:

  • Dědičnost. Podle odborníků může za záchvatovité přejídání do jisté míry genetika. Je to dáno tím, že někteří lidé mají vrozenou vyšší citlivost k dopaminu, což je hormon odpovědný za pocity odměny, slasti a radosti.
  • Pohlaví. Jak už zaznělo výše, BED postihuje častěji ženy než muže. Pravděpodobně za tím stojí biologické faktory a odlišnosti.
  • Změny v mozku. Podle některých studií dochází u pacientů s BED ke změnám struktury mozku, a to ve smyslu silnější odpovědi na jídlo a ztráty ovládání a sebekontroly ve vztahu k potravě.
  • Tělesná hmotnost. Uvádí se, že až 50 % lidí, kteří trpí záchvatovitým přejídáním, je obézních. Pro diagnózu záchvatovitého přejídání splňuje kritéria 25 až 50 % pacientů, kteří se podrobili bariatrické operaci, kdy jim byl chirurgicky zmenšen objem žaludku.
  • Zkreslené vnímání tělesných proporcí. Pacienti zpravidla velmi negativně vnímají své tělesné proporce. Nespokojenost s vlastním tělem, dieta a přejídání pak vedou k rozvoji obtíží.
  • Emoční trauma. Rozvoj onemocnění může ovlivnit také stresující životní událost, jako je smrt bližního, pohlavní zneužívání, autonehoda či odloučení od rodiny. Vliv má údajně také šikana kvůli tělesné hmotnosti.
  • Další psychické onemocnění. Téměř 80 % pacientů, kteří trpí záchvatovým přejídáním, bylo diagnostikováno alespoň jedno další psychické onemocnění. Typicky se jedná o fobii, depresi, post-traumatickou stresovou poruchu, bipolární poruchu či úzkost. BED rovněž souvisí s užíváním návykových látek.

Příznaky záchvatovitého přejídání

Záchvatovité přejídání je typické konzumací velkého množství jídla v krátkém čase, a to i v momentě, kdy pacient vůbec nepociťuje hlad. Nemocný zároveň není schopný kontrolovat, kolik toho vlastně sní. Po záchvatu tak následuje pocit viny. Postižený se za své tělo stydí a snaží se to řešit pomocí nejrůznějších diet či odpírání stravy.

BED bývá zpravidla spojeno s negativními emocemi, stresem a nespokojeností se sebou samým či svým životem. Tyto pocity jsou následně kompenzovány konzumací velkého množství jídla, kdy alespoň částečně obvykle ustupují. Že se jedná o záchvatovité přejídání lze rovněž poznat podle následujících znaků:

  • jezení velkého množství jídla v krátkém čase (za méně než 2 hodiny),
  • vysoká rychlost konzumace, hltání,
  • ignorování pocitu sytosti,
  • neschopnost přestat jíst,
  • ztráta kontroly nad tím, co nemocný jí,
  • schovávání a tajné pojídání potravin,
  • normální či snížená frekvence a množství přijímané potravy v přítomnosti jiných lidí,
  • neschopnost dosáhnout stavu nasycení,
  • pocit stresu a úzkosti, který při jídle mizí,
  • výčitky svědomí, stud a pocit znechucení po záchvatu,
  • pravidelná frekvence záchvatů, dostavují se minimálně jednou týdně po dobu tří měsíců.

Během záchvatovitého přejídání přijme pacient nepřirozeně vysoké množství jídla, a tedy i velké množství energie. To se pak samozřejmě promítne na průměrném týdenním kalorickém příjmu. To je důvod, proč je přibližně 50 % lidí trpících BED zároveň obézních.

Rizika záchvatovitého přejídání

Nadváha a obezita, kterou pacienti se záchvatovitým přejídáním často trpí, vede k celé řadě problémů. Dopad má však přejídání i na duševní a společenský život.

Kardiovaskulární systém a metabolismus. Nadváha se negativně projevuje na kardiovaskulárním systému, přičemž prvním příznakem bývá zpravidla vysoký krevní tlak. Vysoká může být rovněž hladina tuků a cukru. Nadváha i obezita pak urychlují rozvoj takzvaného metabolického syndromu. Nadměrná tělesná hmotnost vede navíc k ateroskleróze a zvyšuje riziko kardiovaskulárního onemocnění.

Klouby a páteř. Kvůli vysoké hmotnosti trpí samozřejmě páteř a klouby, které jsou dlouhodobě přetěžovány. Týká se to například meziobratlových plotének, ale také kyčlí a kolen.

Duševní zdraví. Fakt, že se nemocný opět nedokázal ovládnout, samozřejmě dopadá na jeho duševní zdraví. Vlivem záchvatů se pak u takových jedinců mohou vyskytovat depresivní nálady, může je trápit pocit úzkostí a případně mohou tíhnout také k závislostem na návykových látkách, tedy na drogách a alkoholu.

Společenský život. Nemocí je zpravidla zasažen také společenský život pacienta, který se může vyhýbat veřejnému životu, typicky návštěvám restaurací, grilování či oslavám, a to například ze strachu, že by se nedokázal ovládnout. Omezit společenský život mohou pacienti i kvůli rozvíjející se depresi.

Diagnostika záchvatovitého přejídání

Diagnózu lékař stanovuje na základě anamnestického rozhovoru a po objasnění tělesných i duševních problémů.

Co se týče tělesných obtíží, výrazným příznakem může být nadváha či obezita, kterou nemocní zpravidla trpí. Vzhledem k tomu, že v případě dlouhodobých obtíží mají pacienti stejné zdravotní problémy jako lidé s obezitou, může lékař indikovat různá vyšetření, a to například při podezření na diabetes mellitus 2. typu či vysoký krevní tlak. Rozvinout se mohou také poruchy funkce štítné žlázy.

Lékaře bude během diagnostiky zajímat také to, zda pacient neužívá některé léky, například glukokortikoidy, estrogeny, inzulin či některá psychofarmaka. Medikamenty se totiž mohou podílet na změně stravovacích návyků a vést k nárůstu hmotnosti. Je také důležité vyloučit další případná duševní onemocnění, jako je deprese, úzkostné poruchy či poruchy osobnosti. V úvahu je potřeba vzít i jiné poruchy příjmu potravy či užívání návykových látek.

Důležitou součástí diagnostiky je rovněž laboratorní vyšetření, tedy stanovení různých laboratorních hodnot, jako je například: krevní obraz, metabolismus lipidů (triacylglyceroly a cholesterol), glykemie, funkční vyšetření ledvin, vyšetření moči. Dále lékaře zajímá celková bílkovina, albumin, amyláza a transamináza. Vyšetřena může být rovněž hladina hormonů, například těch štítné žlázy. V některých případech může lékař přistoupit také k vyšetření EKG anebo vyšetření v souvislosti s ortopedickými problémy, například páteře či kolen.

Léčba záchvatovitého přejídání

Během léčby záchvatovitého přejídání lze uplatnit různé přístupy. Ty se odvíjí od individuálních potřeb a zdravotních obtíží každého pacienta. A ačkoli může být léčba do jisté míry odlišná, její cíl je vždy stejný, a sice předcházet záchvatům přejídání, léčit duševní dysbalanci a v případě potřeby také zhubnout.

Mnoho pacientů vyhledá lékaře kvůli své vysoké hmotnosti, přicházejí se s nimi poradit jak zhubnout. Léčba probíhá zpravidla formou psychoterapie, a to ambulantně, někdy ale také formou hospitalizace. Ta je nutná například v případě, že to vyžaduje duševní nebo tělesný stav pacienta. Terapie mohou probíhat jak individuálně, tak ve skupině.

Co se týče úbytku hmotnosti, toho lze dosáhnout změnou životního stylu. Zásadní je dostatečný pohyb, vyvážená strava a kalorický deficit. V některých případech může lékař předepsat léky a v krajní situaci indikovat chirurgický zákrok. Za jistých okolností, například pokud je společně s BED diagnostikována deprese, předepisuje lékař rovněž antidepresiva.

V průběhu terapie může docházet k recidivám, případně i k opakovanému přerušení léčby. Nejen proto má velký význam podpora rodiny a blízkých. Jejich přispění ve všech fázích diagnosticko-léčebných procesů může být pro pacienta rozhodující. Důležitou roli hrají při rozpoznání příznaků, v době diagnostiky i během intenzivní spolupráce s terapeutickým týmem.

Co je to záchvatovité přejídání?
Záchvatovité přejídání se řadí mezi závažná psychická onemocnění, konkrétně se jedná o jednu z poruch příjmu potravy. Nemoc je charakteristická opakovanými epizodami nekontrolovatelného příjmu potravy, kdy postižený během krátké doby zhltá výrazně větší množství jídla, než by během podobné doby normálně snědli jiní lidé. To vede k výčitkám, studu, úzkosti i pocitu znechucení nad svým chováním.
Jak se záchvatovité přejídání projevuje?
Záchvatovité přejídání je typické konzumací velkého množství jídla v krátkém čase, a to i v momentě, kdy pacient vůbec nepociťuje hlad. Nemocný zároveň není schopný kontrolovat, kolik toho vlastně sní. Po záchvatu tak následuje pocit viny. Postižený se za své tělo stydí a snaží se to řešit pomocí nejrůznějších diet či odpírání stravy. Přejídání bývá zpravidla spojeno s negativními emocemi, které po konzumaci alespoň částečně ustupují. Nemocný ztrácí kontrolu nad tím, co jí, potraviny si schovává a pojídá je tajně a ve vysoké rychlosti. Nebývá schopný dosáhnout pocitu nasycení.
Jaké jsou příčiny záchvatovitého přejídání?
Přesné příčiny záchvatovitého přejídání nejsou lékařům dosud přesně známy. Domnívají se však, že na rozvoji obtíží se pravděpodobně podílí dědičnost, pohlaví, tělesná hmotnost i stresové životní situace. Roli hraje i způsob, jakým pacienti vnímají své tělo. Nespokojenost se svým tělem společně s dietami a následným přejídáním problémům totiž zpravidla předchází.
Jak se záchvatovité onemocnění léčí?
Záchvatovité přejídání se léčí několika způsoby. Základem bývá psychoterapie, která může být jak individuální, tak společná. V případě obézního pacienta či pacienta s nadváhou je rovněž nutné se soustředit na redukci váhy. V případě dalších psychických obtíží může lékař předepsat antidepresiva. Důležitou roli hraje během léčby podpora přátel a rodiny.

Zdroje: nzip.cz, medlicker.com, aktin.cz

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