Zánět žaludku může být důsledkem špatné životosprávy. Často probíhá skrytě

7. 2. 2020 9:00
7 nových názorů
ručitel
MUDr. Daniel Petr | Odborný garant článku
„Pokud zvracíte krev či máte tmavě černou stolici, která intenzivně zapáchá, na nic nečekejte a navštivte lékaře.“

Zánět žaludku, odborně gastritida, je nepříjemné onemocnění, které může být důsledkem infekce, ale i špatné životosprávy, převážně stresu a konzumace toxických látek. Projevuje se bolestí horní části břicha, nevolností i zvracením, které může být s příměsí krve. Může ale probíhat i bez příznaků. Nemoc si žádá zásah odborníka. Za obtížemi se totiž může skrývat i nádorové onemocnění. 

Bolest břicha, nevolnost i ztráta chuti k jídlu. Zánět žaludku neboli gastritida, jak se nemoci odborně říká, o sobě dává znát mnoha způsoby. A stejně tak může probíhat zcela skrytě a bez příznaků. Velice často se jedná o důsledek špatné životosprávy, kdy velkou roli hraje požívání alkoholu, špatné stravovací návyky i konzumace velkého množství léků. 

Co se dozvíte v článku
  1. Příčiny zánětu žaludku
  2. Příznaky zánětu žaludku
  3. Komplikace spojené se zánětem žaludku
  4. Vyšetření a léčba nemoci
  5. Prevence zánětu žaludku

Abychom pochopili, proč zánět žaludku vzniká, je nutné nejprve porozumět tomu, jak dochází ke zpracování potravy. To zde probíhá dvěma způsoby, a sice mechanicky, tedy pohybem žaludeční stěny, a chemicky, kdy podstatnou roli hrají enzymy, které mimo jiné rozkládají potravu. Jejich práci usnadňuje žaludeční kyselina, před kterou je sliznice žaludku chráněna vrstvou hlenu. V momentě, kdy je tato ochrana poškozena, může agresivní kyselina vyvolat zánět sliznice žaludku nebo vřed.

Příčiny zánětu žaludku

Zánět žaludku se může vyskytovat v akutní i chronické formě. A zatímco akutní gastritida je definovaná jako náhlý zánětlivý proces, který má pouze přechodný charakter a projevuje se rychlým nástupem obtíží, chronický průběh se často obejde bez výrazných příznaků. Bývá navíc o poznání častější.

Za akutním zánětem žaludku zpravidla stojí:

  • Přemíra alkoholu
  • Jedovaté látky, například nikotin
  • Léky (typicky proti bolesti)
  • Psychická zátěž

Obtíže se mohou vyskytnout v souvislosti s léčbou nádorového onemocnění, konkrétně v důsledku ozařování. Akutní zánět pak mohou vyvolat i bakterie, které se do žaludku dostanou s infikovanými potravinami. Za chronickou gastritidou pak stojí například špatné prokrvování žaludeční sliznice, zpětný tok žlučových kyselin z dvanáctníku anebo infekce bakterií Helicobacter pylori. Může se rovněž jednat o důsledek zánětlivých změn či zhoršené regenerace žaludeční sliznice jako projev stáří.

Příznaky zánětu žaludku

Podle odborníku trpí až 30 % Čechů v produktivním věku trvalými nebo často se vracejícími potížemi spojenými s žaludkem. Konkrétně tlakem, pocitem sytosti, bolestmi, kyselým říháním, křečemi a nevolností spojenou se zvracením. Kromě zánětu žaludku však mohou tyto příznaky poukazovat také na podráždění žaludku, žaludeční nebo dvanáctníkové vředy, refluxní nemoc se zánětem jícnu či dokonce nádor žaludku. Obtíže se většinou nedají určit jen na základě příznaků, nutná je vždy prohlídka sliznice endoskopem.

A jaký má tedy akutní zánět žaludku příznaky? Typicky se jedná o:

Chronický zánět žaludku se pak projevuje vleklými obtížemi. Může se rovněž vyskytovat pocit tlaku, bolest, nadýmání, průjem či zápach z úst.

Komplikace spojené se zánětem žaludku

Nebezpečí v případě zanícené sliznice představuje zejména krvácení. Pokud je dlouhodobého a lehkého charakteru, vede obvykle k únavě a otupělosti. Silné krvácení způsobené poškozením cév, vředem nebo nádorem pak může nemocného přímo ohrozit na životě. Pacient by tak měl okamžitě vyhledat lékaře, a to hlavně v případě, že zvrací krev anebo ji vylučuje společně se stolicí (tmavé až černé zbarvení stolice intenzivního zápachu). Varovným signálem je i náhlá bodavá bolest břicha spojená s velkým pocením a nepravidelným rychlým tepem.

Nebezpečí představuje i fakt, že člověk může ve svém žaludku po dlouhá léta přechovávat bakterii Helicobacter pylori, a nemusí přitom nic tušit. Chronický dlouhotrvající zánět žaludku pak může končit nedostatkem železa a chudokrevností. Určité riziko rovněž představuje vznik nádorového onemocnění, které může být důsledkem dlouhodobého poškození sliznice.

Trápil vás někdy zánět žaludku?

Vyšetření a léčba nemoci

Aby lékař mohl správně určit příčinu potíží, je nutné provést vyšetření. Nejprve se zjišťuje rodinná anamnéza nemocného a následně se provede celkové vyšetření. Při obtížích tohoto typu je navíc pravidlem i gastroskopické vyšetření pomocí endoskopu. V laboratoři je pak vyšetřena rovněž stolice, a to hlavně na přítomnost krve.

Co se týče léčby, ta se odvíjí od toho, zda se jedná o akutní či chronický problém. V případě akutního zánětu je totiž nutné omezit potraviny a nápoje, které sliznici dráždí. Dieta při zánětu žaludku tedy spočívá ve vysazení alkoholu, kávy (včetně bezkofeinové) či kořeněného jídla. Vhodné nejsou ani smažené, tučné či příliš slané potraviny. Neplechu mohou způsobit i perlivé nápoje či celozrnné pečivo. To se doporučuje nahradit bílým a alespoň den starým.

Dále by měl pacient vynechat:

  • Luštěniny
  • Čerstvou zeleninu
  • Plísňové či aromatické sýry
  • Uzeniny
  • Kynuté těsto
  • Některé druhy ovoce (jahody, hrozny, angrešt, rybíz, borůvky…)
  • Tučné maso

Mezi doporučené potraviny oproti tomu patří suchary, piškoty, vařená mrkev, brambory, rýže, banány, jablečné přesnídávky a polévkové vývary. Pít se doporučuje čistou vodu, popřípadě černý čaj. Co se týče bylin a přírodní léčby zánětu žaludku, tady pomůže hlavně mátový a heřmánkový čaj. Obě tyto bylinky mají blahodárné účinky a ulevují obtížím.

Pokud opatření v podobě změny jídelníčku nestačí, je třeba užívat některý z léků neutralizujících kyselost žaludku či snižujících sekreci kyseliny. Lékař vám dále může předepsat i některé z léků, které upravují činnost trávicího traktu, léky uvolňující křeče, inhibitory protonové pumpy a přípravky proti nevolnosti a zvracení.

Léčba chronického zánětu žaludku se pak může lišit, a to hlavně v případě, je-li původcem obtíží bakterie Helicobacter pylori. V takovém případě se nasazují antibiotika, která původce problémů odstraní. Tato léčba se často kombinuje s ochranou sliznice.

Prevence zánětu žaludku

Jelikož obtíže většinou vznikají v důsledku špatného životního stylu, je prevencí pravý opak. Konkrétně se doporučuje omezit alkohol, nikotin, kávu, smažené i kořeněné jídlo a jiné dráždivé potraviny a nápoje. Určitou roli pak samozřejmě hraje i mysl. Tu bychom měli udržovat vyrovnanou a vyvarovat se zbytečnému stresu.

vladka (neregistrovaný)
Dobrý den mohu poprosit alespon o 1 denni jídelníček,mamince zjistili vleklý zánět žaludku a k tomu zvyšený cukr děkuji
MUDr. Thai Bao Han (neregistrovaný)
Dobrý den, vyhledejte si nejbližší nemocnice, zda-li tam nepracuje nutriční terapeut. Je potřeba se k němu objednat a říct mu maminčinu anamnézu. Vyrobí vám jídelníček na míru. Pozor na falešné nutriční terapeuty bez potřebného vzdělání. Ti co pracují při nemocnici by měli být v pořádku, např. VFN v Praze mají ambulance nutriční podpory.
Hana (neregistrovaný)
Dobrý den, měla jsem velké bolesti žaludku a podstoupila gastroskopii. Řekli, že mám zánět žaludku a nasadili mi ráno a večer omeprazol a samozřejmě dietu. Jsem nekuřačka, piju jen velmi příležitostně a nejsem ani velký fanoušek kofeinu. Tak ani nevím, jak jsem k tomu vůbec přišla. Dietovala jsem 3 měsíce, pak si dala tučnejší jídlo a vše se znovu vrátilo. Jak mám vědět jak dlouho budu muset držet dietu a brát prášky ,aby jsem se vyléčila? Večer minimálně 3 hodiny před spánkem už nic nejím a stejně se v noci budím a musím si vyplachovat ústa, protože mě trápí pachuť v ústech. Největší problém co se týče diety je fakt, že mě chybí syrová zelenina a nedokážu si představit fungovat bez ní třeba další tři měsíce. Jak dlouho to mám ještě vydržet, kdy mám navštívit znovu lékaře s tím, že se dle mého názoru stav nějak nelepší?
MUDr. Thai Bao Han (neregistrovaný)
Dobrý den, je to otázka na vašeho ošetřujícího gastroenterologa, protože nevím, jaký typ gastritidy máte - jestli akutní či chronický, jestli máte Helicobactera, atd..
(neregistrovaný)
Mám 2. den po párty lehké nadýmání a kyselost v žaludku, neustálé krkání. Co se týče vylučováni tak jsem močil už několikrát bez problému. Na velké jsem byl jen jednou ale bezproblémově. Mám vyhledat lékaře když se pořád necítim v pořádku cca 36 hodin po konzumaci tvrdého alkoholu? Mohl jsem mít zhruba 2 promile
  • 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 »