Zánět močových cest alespoň jednou v životě potrápí každou druhou ženu. V čem spočívá léčba?

25. 10. 2021 8:00
přidejte názor
Autor: Shutterstock

Pálení pří močení, bolest v podbřišku a časté nutkání na malou. Zánět močových cest alespoň jednou za život potrápí každou druhou ženu, onemocnět jím ale mohou i muži. Za rozvojem obtíží stojí zpravidla bakterie, konkrétně pak Escherichia coli, jež je běžnou součástí střevní mikroflóry. Co na zánět močových cest pomáhá a jak se obvykle projevuje?

Zánět močových cest představuje souhrnné označení pro infekce močového ústrojí, kam se řadí zánět močového měchýře, ledvin, ale i vylučovací trubice a prostaty. Ve všech případech za obtížemi stojí nejčastěji bakterie známá jako Escherichia coli (E. coli), která se zcela běžně vyskytuje v zažívacím ústrojí člověka. Pokud se však dostane do močových cest, může způsobit velmi nepříjemné potíže. Dále za obtížemi mohou stát tyto patogeny:

  • klebsiella,
  • proteus,
  • enterococcus,
  • pseudomonas,
  • Chlamydia trachomatis,
  • ureaplasma,
  • mycoplasma.

U žen zánět močových cest obvykle začíná kolonizací pochvy, u mužů předkožkového vaku. Následně dochází k infikaci močové trubice, měchýře a vzácně i horních močových cest. Mezi rizikové faktory, které pravděpodobnost rozvoje infekce zvyšují, patří:

  • časté zadržování moči,
  • nedostatečná hygiena,
  • nedostatečný přísun tekutin,
  • vrozené vady močové trubice a měchýře,
  • močové kameny,
  • časté střídání sexuálních partnerů,
  • nechráněný pohlavní styk,
  • cukrovka.

Obecně jsou zánětem močových cest častěji postiženy ženy, což je dáno tím, že močová trubice ústí blízko pochvy a řitního otvoru. Ještě hůře jsou na tom nastávající matky, jejichž močový měchýř je stačovaný plodem, a tak se nemusí správně vyprazdňovat. Mezi další rizikové faktory patří třeba instrumentální vyšetření, močová cévka či zavedený permanentní katetr v močové trubici.

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

Vzhledem k tomu, že se zánět močových cest může projevit hned na několika místech močového ústrojí, mohou se od sebe lišit i jednotlivé příznaky. Mezi typické projevy však obecně patří pálení, řezání či bolest při močení. Problémy jsou navíc zřetelné i na samotném proudu moči, který je v případě zánětu nitkovitý. Množství vyloučené moče je častokrát nepatrné a po močení navíc převažuje pocit neúplného vyprázdnění. Kromě toho se u nemocných častokrát objevuje:

U pokročilého zánětu může pacienta potrápit také horečka, třesavka, ale i bolest zad či výtok z močové trubice. Tyto příznaky jsou důkazem toho, že se infekce rozšířila dále a zasáhla i ledviny. V takovém okamžiku by měl být pacient co nejdříve předán do rukou lékaře. 

Zánět močového měchýře

Nejčastější infekcí tohoto typu je zánět močového měchýře (cystitida), lidově zánět močáku. Tomu přechází vniknutí bakterie do močové trubice. Obvykle je na vině bakterie E. coli, která do močového ústrojí vniká z řitního otvoru, stejně tak mohou ale infekci způsobit sexuálně přenosné patogeny. I z toho důvodu je nutné dbát na důkladný výběr sexuálních partnerů.

Rozvoj obtíží může rovněž podporovat vrozená anatomická stavba trubice. Ta je u mužů v průměru o 15 centimetrů delší než u žen, které se i z tohoto důvodu s problémy setkávají podstatně častěji. Vývod močové trubice se v jejich případě totiž nachází blíže k oblasti rekta, odkud hrozí riziko zanesení bakterií.

To je ostatně důvod, proč si nějakou formou zánětu močového ústrojí projde alespoň jednou za život každá druhá žena, kdežto u mužů je to jen každý pátý pacient. Obtíže u nich často vznikají v souvislosti s infekcí předkožkového vaku.

Obecně má na rozvoj obtíží vliv také snížená imunita, prochlazení či cukrovka. U žen se zánět močových cest může rozvinout v důsledku již probíhající gynekologické infekce, vliv má také těhotenství.

Co se týče toho, jaké má zánět močového měchýře příznaky, jeho specifické projevy jsou tyto:

  • pálení a řezání při močení,
  • časté nutkání na malou,
  • pocit neúplného vymočení,
  • zakalená a zapáchající moč,
  • moč s příměsí krve,
  • močení po malém objemu,
  • teplota,
  • bolest v podbřišku,
  • celková únava.

Zánět močové trubice

Zánět močové trubice (uretritida) jde obvykle ruku v ruce se zánětem močového měchýře, může se ale objevit i samostatně, typicky u sexuálně aktivních jedinců. U těch je zánět močové trubice způsobem patogeny:

  • chlamydia,
  • ureaplasma,
  • mycoplasma,
  • Neisseria gonorrhoeae,
  • Trichomeda vaginalis,
  • Herpes simplex.

Podobně jako zánět močového měchýře, i tento problém se projevuje řezavou či pálivou bolestí při močení. Výjimkou však není ani výtok z močové trubice, který je doprovázený občasným svěděním.

V případě odhalení zánětu močové trubice je nutné co nejdříve zahájit léčbu. Pokud se uretritida neléčí, může se velice snadno rozšířit na další orgány, a to nejen močové, ale i pohlavní soustavy. V dlouhodobém měřítku pak může vést například ke zjizvení močové trubice a vzniku nejrůznějších zúženin. U mužů pak bývá častým důvodem neplodnosti.

Zánět ledvin a ledvinové pánvičky

Pyelonefritida neboli zánět ledvin a ledvinové pánvičky se u pacientů zpravidla rozvíjí v důsledku zánětu močového měchýře, přičemž lékaři rozlišují hned dva druhy zánětu ledvin a ledvinové pánvičky. Konkrétně obstrukční, který vzniká v reakci na ucpání močových cest (typicky konkrementem), a neobstrukční, kdy má onemocnění jiný původ. Obstrukční zánět ledvin vyžaduje urgentní odstranění překážky.

V některých případech může být zánět ledvin pro člověka životu nebezpečný, a to typicky v momentě, kdy se obtíže neléčí. Infekce se pak může snadno rozšířit do organismu pacienta, kde může následně vyústit v sepsi.

Kromě příznaků typických pro zánět může pacienta potrápit také bolest v bedrech, nevolnost a zvracení. V pokročilých fázích onemocnění se pak běžně dostavuje také zimnice, schvácenost a třesavka. Během vyšetření je u pacientů přítomna bolestivost při pohmatu v oblasti břicha, kde se nachází zasažená ledvina.

Zánět prostaty

Jak již z názvu vyplývá, zánět prostaty, tedy prostatitida, je onemocnění, které postihuje pouze muže. Konkrétně je v tomto případě zasažena mužská přídatná pohlavní žláza, jež produkuje sekret, který je součástí ejakulátu. Dochází zde rovněž ke spojení pohlavních a močových cest. Příčinou nemoci jsou zpravidla stejné bakterie, které napadají i další oblasti močových cest.

Zánět prostaty se častěji objevuje u starších pacientů, postihnout ale může jedince jakéhokoli věku. S přibývajícími lety však dochází ke zvětšení prostaty, a tak riziko rozvoje obtíží stoupá. V důsledku zbytnění prostaty pak dochází k poruchám močení a vyprazdňování močového měchýře. Ani v případě prostatitidy se s léčbou nevyplatí otálet. Může totiž vést ke vzniku abscesu, k rozšíření zánětu do dalších orgánů či k rozvoji chronické formy nemoci.

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

Průběh zánětu močových cest se u dětí může znatelně odlišovat. Vždy se totiž odvíjí od jejich věku. Zatímco novorozenci mívají spíše asymptomatický průběh nemoci, anebo se naopak dostávají do septického šoku, děti do 6 měsíců věku nejčastěji trápí:

Batolata oproti nim mívají průběh o poznání specifičtější. Více se navíc týká přímo močových cest. Typické je pro ně například časté močení, pálení či řezání při močení, bolest břicha, ale i únik moči. Zcela běžně se u nich objevuje také horečka.

U dětí je třeba jakékoli obtíže spojené s močovým ústrojím konzultovat s lékařem. Neléčená infekce nebo pozdě nasazená léčba může vyústit v chronický zánět močových cest, případně až v zánět ledvin. Zanedbání léčby u dívek pak může vést až k neplodnosti.

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

Muži zánětem močových cest trpí obecně méně často než ženy. Může za to delší močová trubice. Aby se bakterie dostaly do jejich močového ústrojí, musí tedy překonat delší vzdálenost. Co se týče projevů zánětu močových cest, ty jsou obdobné jako u žen. Muže zánět močového měchýře, trubice či ledvin nejčastěji potrápí v důsledku:

  • nedodržování pitného režimu,
  • zbytnění prostaty,
  • močových kamenů,
  • nechráněného análního sexu,
  • užívání některých léků.

Diagnostika zánětu močových cest

Přítomnost zánětu lze zjistit už domácím testem, oficiální diagnózu by měl ale vždy stanovit lékař. Ten zanícené místo nejprve vyšetří pohmatem podbřišku, čímž odhalí případnou bolestivost, a následně provede biochemický rozbor moči. Její stav může rovněž ověřit papírkovým testem. Podstatný je v tomto případě nález leukocytů (bílých krvinek) a erytrocytů (červených krvinek), jejichž přítomnost v moči zánět potvrzuje. V případě nejednoznačných výsledků, indikuje lékař ještě vyšetření ke zjištění přesného původce zánětu, konkrétně tedy kultivaci, ultrazvuk či rentgen.

Léčba zánětu močových cest

Pokud jde o to, co na zánět močových cest pomáhá, vzhledem k tomu, že za infekcí zpravidla stojí některá z bakterií, předepisují lékaři obvykle antibiotika. Na onemocnění je rovněž vhodné nasadit probiotika a pozitivní vliv může mít u zánětu močových cest domácí léčba. Podstatný je například dostatečný pitný režim, který pomáhá vyplavovat bakterie ven z těla, ale také vyvážená strava bohatá na vitamíny a minerály.

Antibiotika na zánět močových cest je pak dobré podpořit také konzumací brusinek a močopudných bylinných čajů.  Zcela zásadní je rovněž dostatečný odpočinek. Co se týče volně dostupných přípravků, rychlou pomoc na zánět močových cest představuje třeba Urinal Akut či Apo-Brusinky. Vhodné jsou rovněž výtažky z březové šťávy nebo přesličky polní.

A za jak dlouho odezní zánět močových cest v případě včasné léčby? Obvykle se pacientovi uleví po 3 až 7 dnech. Pokud jde o to, jak dlouho trvá zánět močových cest, záleží na více faktorech, obecně však kolem 14 dní. Pacienty rovněž zajímá, zda je zánět močových cest přenosný. Onemocnění jako takové nakažlivé není, některé bakterie, které mohou infekci vyvolat, je ale například možné přenášet pohlavní cestou.

Prevence zánětu močových cest

Rozvoji zánětu močových cest se dá alespoň částečně předejít dodržováním těchto zásad:

  • pijte dostatek tekutin,
  • nezadržujte moč,
  • noste kvalitní bavlněné prádlo,
  • močte po každém pohlavním styku,
  • na mytí intimních partií používejte pouze gely k tomu určené,
  • po stolici se utírejte pouze zepředu dozadu.

Zdroje: uroklinikum.cz, benu.cz, vitalia.cz, urogyn.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 »