Průjem může být známkou toxinů i závažné choroby. Jak ho zastavit?

16. 12. 2022 11:00
7 nových názorů

Průjem je obvykle známkou toho, že se náš organismus něčemu brání. Zpravidla se objevuje po požití škodlivých toxinů. Za jeden až dva dny však většinou sám zmizí. V případě průjmu se nejedná o samotnou nemoc, ale o příznak, který kromě přítomných toxinů může signalizovat také širokou škálu lehkých i závažných chorob.  

Příznaky

Průjem je častá, řídká až vodnatá stolice. Opakované vyprazdňování je doprovázeno škrundáním a křečemi v břiše. Tělo v takové situaci nestačí vstřebávat vodu, kterou stolice obsahuje, a hrozí proto dehydratace.

Ve vážných případech je průjem doprovázen horečkou vyšší než 38 °C, silnými křečemi, závratěmi, pocity na omdlení, popřípadě zástavou močení, či stolice obsahuje krev nebo je černá. V takové situaci je důležité vyhledat okamžitě lékaře. Zvláště nebezpečný může být průjem u dětí. [1, 2, 3, 45]

Příčiny průjmu

Průjem je většinou následek bakteriální nebo virové infekce z potravy nebo nápojů, stresu, nedostatku vitamínů nebo užívání antibiotik, které ničí užitečné střevní bakterie.

Průjem může mít i jiný důvod vzniku jako je například konzumace většího množství ovoce nebo zeleniny, než na které je trávicí ústrojí zvyklé. Jedná se většinou o citrusové plody a fazole. Průjem po jídle pak může značit potravinovou intoleranci, například nesnášenlivost laktózy či lepku. Může být též známkou vážnější nemoci, například rakoviny, Crohnovy choroby nebo onemocnění slinivky.

Průjmy rovněž dělíme podle délky jejich trvání, a to konkrétně na: 

  • Akutní průjem, který trvá maximálně 14 dní a tělo se pomocí něj zbavuje škodlivých látek – nejčastěji infekce.
  • Chronický průjem neboli dlouhodobý průjem trvá déle než dva týdny a obvykle značí přítomnost jiného onemocnění, po němž je nutné bedlivě pátrat. [6, 78]
Léčivý přípravek určený k léčbě průjmu.
199
Přípravek Enterol je určen k podpůrné léčbě akutního infekčního průjmu ; k léčbě i prevenci zánětu tlustého střeva provázeného průjmy...
459
Prostředek s příchutí pomeranče a vanilky se používá k léčbě akutního a chronického průjmu a s onemocněním jícnu, žaludku, dvanáctníku a střeva.
335
Léčivý přípravek určený k léčbě průjmu.
199
Přípravek Enterol je určen k podpůrné léčbě akutního infekčního průjmu ; k léčbě i prevenci zánětu tlustého střeva provázeného průjmy...
459
Prostředek s příchutí pomeranče a vanilky se používá k léčbě akutního a chronického průjmu a s onemocněním jícnu, žaludku, dvanáctníku a střeva.
335

Zbarvení průjmu

Červený průjem

Červená barva obvykle značí krvácení, je tedy vždy důvodem k návštěvě lékaře. Kromě hemeroidů a mechanického poškození sliznice střeva, kdy se krev nachází jen kolem stolice, může krvavý průjem značit také rakovinu tlustého střeva či jeho zánětlivé onemocnění.

Černý průjem

I černá brava stolice značí krvácení. Konkrétně pak v horních partiích trávicího traktu. To může být důsledkem například prasklého žaludečního vředu. Je tedy nutná návštěva lékaře. Mějte však na paměti, že tmavé až černé zbarvení stolice může být rovněž důsledkem konzumace červené řepy, živočišného uhlí nebo doplňků stravy obsahujících železo.

Zelený průjem

Stolice zeleného zbarvení je poměrně častá zejména u kojenců. Tento odstín obvykle naznačuje, že potrava prochází střevem rychleji, než by měla. Zelená stolice se může vyskytnout také v případě, že dotyčný člověk snědl velké množství špenátu. Zároveň se ale může jednat o příznak některého z onemocněních trávicího traktu, a to konkrétně třeba:

  • ulcerózní kolitidy,
  • syndromu dráždivého tračníku,
  • Crohnovy nemoci,
  • celiakie,
  • rakoviny.

Žlutý průjem

Žlutý vodnatý průjem obvykle ukazuje na přítomnost parazita ve střevě, a to především při cestovatelských průjmech. Zároveň může být příznakem virové či bakteriální infekce zažívacího traktu nebo onemocnění jater. Nemusí se vždy jednat o projevy nemoci. Žlutá stolice může znamenat i to, že dotyčný snědl velké množství potravin či potravinových doplňků této barvy. [9, 10, 11, 12]

Průjem u dětí

Zvláštní pozornost si žádá průjem u dětí a průjem u kojenců. V případě těžších průjmů jsou totiž velmi náchylní k dehydrataci. Kojenci trpící průjmem by měli být i nadále pravidelně krmeny a děti by neměly pít sodovku, ovocné šťávy nebo sportovní nápoje. Jak kojenci, tak děti by neměli užívat léky proti průjmu. Co na průjem u starších dětí? K jídlu podávejte banány, jablečnou šťávu a rýži. Pokud dítě zvrací, nikdy mu nedávejte tuhou stravu. V případě dehydratace ihned vyhledejte lékařskou pomoc.

Kdy ještě navštívit lékaře?

  • Pokud se průjem objeví u dětí mladších 6 měsíců.
  • Dítě vykazuje příznaky střední nebo těžké dehydratace.
  • Zvýšená teplota nebo horečka trvá déle než 24 až 48 hodin.
  • Ve stolici je příměs krve nebo má průjmová stolice tmavou barvu.
  • Průjem u dítěte trvá déle než týden.
  • Dítě odmítá pít nebo jíst. [13, 14, 15, 16]

Průjem v těhotenství

Ačkoli se většina těhotných žen potýká spíš se zácpou, která je způsobená hormonálními změnami, může některé nadcházející maminky potrápit zcela opačný problém, přičemž průjem na začátku těhotenství může být spojen přímo s početím. Jde tedy o reakci na náhlou tělesnou změnu. Průjem ke konci těhotenství zas může být předzvěstí blížícího se porodu. Obecně je ale průjem, který se vyskytne v průběhu gravidity, způsoben klasickou virovou infekcí a od toho se odvíjí i jeho léčba. [17, 18, 19]

Průjem ze stresu

Na vznik průjmu může mít vliv i lidská psychika. Zvláště pak u citlivějších jedinců se může objevit průjem ze stresu. Ten může vyvolat například:

  • mluvený projev na veřejnosti,
  • zkouška nebo pohovor,
  • společenské akce,
  • osobní problémy,
  • příliš mnoho práce,
  • problémy v zaměstnání. [20, 21, 22]
Chronický stres způsobuje deprese, obezitu i rakovinu. Víte, proč tomu tak je?
Přečtěte si také:

Chronický stres způsobuje deprese, obezitu i rakovinu. Víte, proč tomu tak je?

Léčba průjmu – co pomáhá na průjem?

Jak se zbavit průjmu? Střevo má svoji jedinečnou vlastnost – dokáže se léčit samo. Jak již bylo zmíněno, průjem je v podstatě očistou organismu od virů či bakterií. Proto není důležité podstupovat nijak speciální léčbu, ale pouze doplnit tělu potřebné tekutiny, aby nedošlo k dehydrataci. Zkuste čaj z řepíku či ostružinového nebo malinového listí obsahující taniny, které pomáhají tělu zadržovat tekutiny. Pokud nepomohou čaje, zkuste jitrocel blešníkový, vstřebává nadbytečnou tekutinu ze střeva a dodává stolici hmotu.

Je podle vás průjem dostatečným důvodem nejít do práce?

Co proti průjmu pomáhá, pokud je spojen s užíváním antibiotik? Jednoznačně probiotika. Pomohou obnovit přiměřenou hladinu užitečných bakterií ve střevech. Jedním z volně dostupných léků je GOLDIM ProbioFlora.

Prostředků proti průjmu naleznete na trhu spoustu. Jedná se například o:

  • Endiaron – vhodné využití pro léčbu průjmu infekčního původu,
  • Smecta – vhodné využití především pro léčbu průjmu způsobeného dietní chybou, nebo otravou z jídla,
  • černé uhlí.

Seznam volně dostupných prostředků na léčbu průjmu různých původů naleznete zde: léky na průjem. [23, 24, 25, 26, 27, 28]

Co jíst při průjmu

Jak zastavit průjem? Pokud se nejedná o příznak bakteriální nemoci, tak nejlépe úpravou jídelníčku. Dieta při průjmu spočívá převážně ve vynechání mléka, tučných potravin a sladkostí. Ideální je konzumace sucharů a tvrdšího pečiva. Při mírném zklidnění konzumujte po menších dávkách brambory, bílou rýži, vařenou mrkev a ovoce jako jsou banány, jablka a borůvky. Strava při průjmu může rovněž obsahovat vývar z krůtího nebo kuřecího masa. [29, 30, 31, 32]

Zdroje: internimedicina.cz, lekarna.cz, ikem.cz, lekarnickekapky.cz, nzip.cz, labtestsonline.cz, medicalnewstoday.com, webmd.com, mayoclinic.org, healthline.com

jarmila (neregistrovaný)
DOBRÝ DEN prosím mám jž 14 dní průjem i 5 x denně a to už 14 dní, průjem je řídky a hnědý..jím jen co mohu a hlavně piju vodu. lékař mi řekla at si koupím něco v lékarně.Děkují za odpověd.JARMILA
Alena (neregistrovaný)
Mě tři děti mají průjem cca už pět dní a jsou prázdniny, nejspíš to mají z toho když jsme byli ve Vietnamské restauraci tak nám nedali jíst lidské maso ale psí maso!
MUDr. Thai Bao Han (neregistrovaný)
Dobrý den, a byla jste už vyšetřena na gastroenterologii? Provedli vám endoskopická vyšetření, odběry, ultrazvuk břicha?
  • 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 »