Zánět močových cest se projeví i na barvě moči. Jak se pozná, že zánět postoupil do ledvin?

3. 5. 2023

Sdílet

Autor: Depositphotos
Zánět močových cest se projevuje nepříjemným pálením, nucením na močení či bolestí v podbřišku. Často bývá způsoben bakteriemi zanesenými z tlustého střeva, konkrétně bakterií Escherichia coli. Ke vzniku zánětu pak přispívá nedostatečná hygiena, zadržování moči nebo močové kameny. Močové infekce by se přitom rozhodně neměly podceňovat, jinak mohou přejít až do ledvin.

Příčinou zánětu močových cest jsou bakterie, které se dostávají do orgánů močového ústrojí z vnějšího okolí. Na tyto infekce jsou náchylnější ženy, protože mají kratší močovou trubici. Bakterie mohou tudíž snadněji postoupit do močového měchýře a množit se v něm. Problémy s močovými infekcemi ale trápí často i seniory, pacienty s diabetem nebo muže se zbytnělou prostatou. [1, 23]

Co je zánět močových cest?

Zánět močových cest je souhrnné označení pro všechny infekce močové soustavy. Tyto infekce jsou zpravidla bakteriálního původu, ojediněle je však mohou způsobovat také kvasinky nebo viry. Nejčastěji je vyvolává Escherichia coli, která se běžně nachází ve střevní mikroflóře. Z dalších mikroorganismů způsobují močové infekce rody Klebsiella, Proteus, Enterococcus nebo Pseudomonas, ale také některé pohlavně přenosné bakterie:

  • Chlamydia trachomatis,
  • Ureaplasma,
  • Mycoplasma. [4, 5, 6]

Mezi infekce postihující močové ústrojí patří:

  • zánět močového měchýře (cystitis),
  • zánět močové trubice (uretritis),
  • zánět ledvin a ledvinné pánvičky (pyelonefritis),
  • zánět prostaty (prostatitis).

Bakterie se nejprve dostane do močové trubice, odkud se šíří proti proudu moči až do močového měchýře. Pokud člověk pije málo tekutin a zadržuje moč, vytváří tím ideální prostředí pro množení patogenů v močovém měchýři. Neléčený zánět močového měchýře může snadno přejít v zánět ledvin, což už je mnohem závažnější stav. [7, 8]

Problémy s močovými cestami nevratně poškodí ledviny Přečtěte si také:

Problémy s močovými cestami nevratně poškodí ledviny

Záněty močových cest lze klasifikovat podle mnoha kritérií. Jedním z nich je frekvence výskytu a rychlost nástupu klinických příznaků:

  • akutní zánět močových cest – běžné infekce, které potkají během života téměř každou ženu, po vyléčení už se nevrací,
  • chronický zánět močových cest (opakovaný zánět močových cest) – chronické a recidivující infekce, trápí pacienty několikrát za rok. [9, 10]

Příčiny zánětu močových cest

K rozvoji zánětu močových cest může přispívat celá řada faktorů:

  • nedostatečná intimní hygiena,
  • zadržování moči,
  • nedostatečný příjem tekutin,
  • vrozené vady močového ústrojí,
  • močové konkrementy,
  • permanentní močový katetr,
  • časté střídání pohlavních partnerů,
  • nechráněný pohlavní styk. [11, 12]

Jaké má zánět močových cest příznaky?

Příznaky zánětu močových cest se odvíjí od toho, jaký orgán je postižen. Také záleží na tom, jaký patogen infekci způsobil. U většiny infekcí se objevují pálení, řezání nebo bolesti při močení. Nemocní často pociťují bolesti v podbřišku a nucení na močení. Zároveň ale mají problém nějakou moč vůbec vyloučit a trpí pocity nedostatečného vyprázdnění.

Viditelné změny je možné sledovat i na samotné moči. Bývá kalná, zapáchá, nebo je dokonce načervenalá, pokud se do ní dostane příměs krve. U pokročilých zánětů, kdy infekce postoupí do ledvin, se přidružují tyto charakteristické příznaky:

Zánět močových cest u dětí

Zánět močových cest není u dětí snadné diagnostikovat. V každém věkovém období se totiž projevuje trochu jinak. U kojenců se mnohdy neobjevují vůbec žádné příznaky, nebo naopak dochází k septickým stavům. Děti v batolecím věku trápí už trochu specifičtější příznaky, které se podobají zánětům u dospělých:

  • časté močení,
  • pálení, řezání a bolesti při močení,
  • bolesti bříška,
  • úniky moči. [17, 18]
Za zánět močových cest mohou často mokré plavky Přečtěte si také:

Za zánět močových cest mohou často mokré plavky

Zánět močových cest v těhotenství

Infekce močových cest jsou v těhotenství poměrně běžné, a to především kvůli anatomickým změnám močových cest (tlačí na ně zvětšující se děloha). Případné potíže s močením je nutné začít řešit okamžitě. Neléčený zánět močových cest představuje riziko nejen pro samotnou ženu, ale i pro její nenarozené dítě. V krajních případech může dokonce vyvolat předčasný porod. [19, 20]

Zánět močových cest u mužů

Na infekce močových cest trpí muži mnohem méně než ženy. Je to dáno tím, že mají delší močovou trubici, takže je pro bakterie mnohem obtížnější doputovat až do močového měchýře. Zánět močového měchýře u mužů mohou způsobit podobné rizikové faktory jako u žen. Více ohroženi jsou také muži, kteří trpí hyperplazií prostaty, nebo jedinci provozující nechráněný anální styk. Zánět močové trubice u mužů se pak objevuje spíše v souvislosti s pohlavně přenosnými chorobami. [21, 22]

Trpíte záněty močových cest?

Zánět močových cest: léčba

Aby mohl být zánět močových cest správně léčen, musí být nejprve proveden rozbor moči. Z výsledků poté ošetřující lékař zjistí, jakými bakteriemi je zánět způsoben, a předepíše vhodné léky.

Léky na zánět močových cest

Na akutní záněty močových cest lékaři nejčastěji předepisují chemoterapeutika, jako jsou nitrofurantoin, sulfamethazol nebo trimethoprim. U pacientů, kteří nemohou užívat tyto léky, lékaři předepisují některé z širokospektrých antibiotik. Podobně přistupují i k pacientům, u kterých chemoterapeutika nezabírají. [23, 24]

U nekomplikovaných infekcí se antibiotika předepisují na 5 dní, u vážnější případů na 7–10 dní. Důležité je poctivě dobrat celé balení, i když se pacient cítí už dobře. Společně s antibiotiky se doporučuje začít užívat rovnou i probiotika, aby nedošlo k narušení střevní mikroflóry.

Léčbu infekce močových cest můžete podpořit užíváním přípravků s obsahem D-manózy. Velice oblíbené jsou pak také přípravky s brusinkami, sušené brusinky nebo brusinkový džus. [25, 26, 27]

8 tipů, jak na zánět močových cest Přečtěte si také:

8 tipů, jak na zánět močových cest

Zánět močových cest: domácí léčba

Při léčení infekcí močových cest existují různá režimová opatření, která mohou stav pacienta výrazně zlepšit:

  • pití velkého množství tekutin,
  • pití urologických čajů,
  • sedací koupele z heřmánku nebo březového listí,
  • teplé obklady na břicho. [28, 29]

Zdroje: nih.gov, cdc.gov, mayoclinic.org, healthline.com, everydayhealth.com, clevelandclinic.org, webmd.com, health.harvard.edu, cpzp.cz, nzip.cz, solen.cz, urologiepropraxi.cz, medicinapropraxi.cz, cus.cz, fnplzen.cz

Jak probíhá zánět močových cest?
Zánět močových cest začíná v močové trubici, do které se dostanou bakterie. Tyto mikroorganismy pak mohou dojít až do močového měchýře, kde se v případě zadržování moči a nedostatečného pití tekutin nekontrolovatelně množí. V této fázi onemocnění se objevují bolesti a řezání při močení, nucení na močení, pocit nedokonalého vymočení a bolesti v podbřišku. Pokud se zánět močového měchýře nijak neléčí, může postoupit až do ledvin.
Jak léčit zánět močových cest?
Základem léčby je správná diagnóza. Lékař by měl indikovat rozbor moči a na základě výsledků předepsat pacientovi vhodná antibiotika. Z podpůrných opatření se doporučuje užívat přípravky s D-manózou, konzumovat brusinky, pít dostatečné množství tekutin a snažit se pobývat v teplém prostředí.
Jaká jsou nejpoužívanější antibiotika na zánět močových cest?
Jestliže se dá u zánětu předpokládat nekomplikovaný průběh, je lékem první volby některý přípravek ze skupiny chemoterapeutik (nitrofurantoin, sulfamethazol, trimethoprim). Pokud pacient na lék první volby nereaguje, předepíše se jiné antibiotikum.

Autor článku

Copywriterka na volné noze spolupracující s Vitalia.cz. Po dokončení studia laboratorní diagnostiky ve zdravotnictví pracovala na oddělení klinické biochemie a hematologie.

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).
'; document.getElementById('outstream-iframe').onload = function () { setupIframe(); } replayScreen = document.getElementById('iinfoOutstreamReplay'); iinfoOutstreamPosition = document.getElementById('iinfoOutstreamPosition'); outstreamContainer = document.getElementsByClassName('outstream-container')[0]; setupReplayScreen(); } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if ( location.href.indexOf('rejstriky.finance.cz') !== -1 || location.href.indexOf('finance-rejstrik') !== -1 || location.href.indexOf('firmy.euro.cz') !== -1 || location.href.indexOf('euro-rejstrik') !== -1 || location.href.indexOf('/rejstrik/') !== -1 || location.href.indexOf('/rejstrik-firem/') !== -1) { outstreamDirectPlayed = true; soundAllowed = true; iinfoVastUrlIndex = 0; } if (!outstreamDirectPlayed) { console.log('OUTSTREAM direct'); setUpIMA(true); } else { if (soundAllowed) { const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { console.log('OUTSTREAM sound forbidden'); renderBanner(); }); } } else { renderBanner(); } } } function getWrapper() { let articleWrapper = document.querySelector('.rs-outstream-placeholder'); // Outstream Placeholder from RedSys manipulation if (articleWrapper && articleWrapper.style.display !== 'block') { articleWrapper.innerHTML = ""; articleWrapper.style.display = 'block'; } // Don't render OutStream on homepages if (articleWrapper === null) { if (document.querySelector('body.p-index')) { return null; } } if (articleWrapper === null) { articleWrapper = document.getElementById('iinfo-outstream'); } if (articleWrapper === null) { articleWrapper = document.querySelector('.layout-main__content .detail__article p:nth-of-type(6)'); } if (articleWrapper === null) { // Euro, Autobible, Zdravi articleWrapper = document.querySelector('.o-article .o-article__text p:nth-of-type(6)'); } if (articleWrapper === null) { articleWrapper = document.getElementById('sidebar'); } if (!articleWrapper) { console.error("Outstream wrapper of article was not found."); } return articleWrapper; } function setupDimensions() { outstreamWidth = Math.min(iinfoOutstreamPosition.offsetWidth, 480); outstreamHeight = Math.min(iinfoOutstreamPosition.offsetHeight, 320); } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = directVast; console.log('Outstream DIRECT CAMPAING advert: ' + directVast); videoContent.muted = true; videoContent.volume = 0; outstreamDirectPlayed = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = outstreamWidth; // adsRequest.linearAdSlotHeight = outstreamHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function setupReplayScreen() { replayScreen.addEventListener('click', function () { iinfoOutstreamPosition.remove(); iinfoVastUrlIndex = 0; outstreamInit(); }); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(outstreamWidth, outstreamHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } /** * Handles the ad manager loading and sets ad event listeners. * @param { !google.ima.AdsManagerLoadedEvent } adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } /** * Handles actions taken in response to ad events. * @param { !google.ima.AdEvent } adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: // This is the first event sent for an ad - it is possible to // determine whether the ad is a video ad or an overlay. if (!ad.isLinear()) { // Position AdDisplayContainer correctly for overlay. // Use ad.width and ad.height. videoContent.play(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // This event indicates the ad has started - the video player // can adjust the UI, for example display a pause button and // remaining time. if (ad.isLinear()) { // For a linear ad, a timer can be started to poll for // the remaining time. intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstreamLastError === 303) { if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } break; } } /** * Handles ad errors. * @param { !google.ima.AdErrorEvent } adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstreamLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { renderBanner(); } } function renderBanner() { if (isBanner) { console.log('Outstream: Render Banner'); iinfoOutstreamPosition.innerHTML = ""; iinfoOutstreamPosition.style.height = "330px"; iinfoOutstreamPosition.appendChild(bannerDiv); } else { console.log('Outstream: Banner is not set'); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoOutstreamPosition.remove(); outstreamInit(); } else { return false; } adVolume = 1; return true; } /** * Pauses video content and sets up ad UI. */ function onContentPauseRequested() { videoContent.pause(); // This function is where you should setup UI for showing ads (for example, // display ad timer countdown, disable seeking and more.) // setupUIForAds(); } /** * Resumes video content and removes ad UI. */ function onContentResumeRequested() { videoContent.play(); // This function is where you should ensure that your UI is ready // to play content. It is the responsibility of the Publisher to // implement this function when necessary. // setupUIForContent(); } function onActiveView() { if (outstreamContainer) { const containerOffset = outstreamContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstreamPaused) { adsManager.resume(); outstreamPaused = false; } return true; } else { if (!outstreamPaused) { adsManager.pause(); outstreamPaused = true; } } } return false; } let outstreamInitInterval; if (typeof cpexPackage !== "undefined") { outstreamInitInterval = setInterval(tryToInitializeOutstream, 100); } else { const wrapper = getWrapper(); if (wrapper) { let outstreamInitialized = false; window.addEventListener('scroll', () => { if (!outstreamInitialized) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { outstreamInit(); outstreamInitialized = true; } } }); } } function tryToInitializeOutstream() { const wrapper = getWrapper(); if (wrapper) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstreamInitInterval); outstreamInit(); } } } else { clearInterval(outstreamInitInterval); } } }
OSZAR »