Příznaky kapavky se liší v závislosti na pohlaví. U mužů bývají daleko výraznější

26. 1. 2024 7:30
přidejte názor
Autor: Depositphotos/NewAfrica

Jednou z nejčastějších pohlavně přenosných chorob je v současné době kapavka, která každoročně postihne miliony lidí. Projevy této nemoci bývají u mužů a žen odlišné, přičemž zahrnují hlavně hnisavou infekci močového a pohlavního ústrojí. Pokud se kapavka včas neléčí, může způsobit také řadu nepříjemných komplikací, jako je například neplodnost.

Co je kapavka?

Co se dozvíte v článku
  1. Co je kapavka?
  2. Jaké má kapavka příznaky a projevy?
  3. Možné komplikace

Kapavka (latinsky gonorrhoea, hovorově tripl) je hojně rozšířené onemocnění přenášené hlavně při pohlavním styku, které má na svědomí gramnegativní bakterie Neisseria gonorrhoeae (gonokok). Typicky se projevuje jako hnisavý zánět sliznic urogenitálního traktu, ale v některých případech může zasáhnout také další části těla, kam patří konečník, hltan nebo oční spojivky.

Společně s chlamydiemi, syfilidou a trichomoniázou se v dnešní době kapavka řadí mezi nejčastěji se vyskytující pohlavně přenosné choroby. Tímto nepříjemným onemocněním se každý rok nakazí více než 80 milionů lidí, přičemž na území České republiky bývá hlášeno zhruba 1400 nových případů ročně. Nejvíce zasaženi přitom bývají jedinci ve věku od 15 do 34 let. [1, 2, 34]

Jaké má kapavka příznaky a projevy?

Kapavka nejčastěji postihuje mladé jedince, kteří jsou sexuálně aktivní. Její symptomy se pak liší v závislosti na pohlaví. Zatímco u mužů mívá kapavka bouřlivé projevy, v případě žen jsou příznaky spíše nenápadné nebo se nemusí projevit vůbec. V takovém případě hovoříme o asymptomatickém průběhu nemoci, což ale neznamená, že by pacientka nemohla předat infekci dále.

U mužů se kapavka projevuje hlavně jako hnisavý zánět močové trubice, který se později může rozšířit také na další místa a způsobit infekci prostaty, nadvarlete či varlete. Ženská kapavka také mívá podobu zánětu močové trubice, ale postihuje také endocervix, což je výstelka děložního hrdla. Výsledkem pak bývá zánět této sliznice a řada nepříjemných zdravotních potíží.

Příznaky kapavky u mužů

První symptomy kapavky se u mužů objevují v rozmezí 2–5 dnů (tedy rychleji než u žen), ale v některých případech to může trvat déle, konkrétně až 2 týdny. Pokud jde o to, jaké má kapavka příznaky u mužů, nemoc se zpočátku projevuje jako hnisavý zánět močové trubice (uretritida), který doprovází také řada charakteristických obtíží.

Akutní onemocnění probíhá nejprve v přední části močové trubice, což se označuje jako přední kapavka, a pokud se neléčí, přechází i do její zadní části, takže pak hovoříme o zadní kapavce. Následně může postihnout také močový měchýř a prostatu (prostatitida) a někdy se močovými cestami rozšíří až do nadvarlete či varlete, kde vznikne akutní zánět (epididymitida nebo orchitida).

Zánět močové trubice se projevuje hlavně nepříjemným pálením a řezáním při močení, což se pojí s bíložlutým nebo až zelenožlutým hnisavým výtokem. Tato tekutina se ovšem později mění na sklovitou až čirou a může zcela vymizet. Následně někteří pacienti pozorují takzvanou ranní kapku, což je znak přechodu nemoci do chronického stádia. Samotné ústí močové trubice navíc bývá výrazně zarudlé a objevuje se zde také nepříjemný otok.

Pokud se nemoc rozšíří do zadní části močové trubice, k projevům se přidává třeba časté nucení na močení (polakisurie), terminální hematurie, zadržování moči nebo bolestivá erekce a poluce. Zánět prostaty se pojí hlavně se zvýšenou teplotou, s bolestmi břicha a nevolností nebo s bolestmi při močení a defekaci, zatímco pro zánět nadvarlete je typické jednostranné zarudnutí a zduření šourku, ale i nepříjemná bolest či horečka. [5, 6, 7, 8, 9]

Příznaky kapavky u žen

Inkubační doba ženské kapavky je o něco delší než u mužů. Jedná se přitom zhruba o 4–7 dnů, ale někdy to může trvat klidně i déle než 2 týdny. Jestliže vás zajímá, jaké má kapavka příznaky u žen, nejčastěji se jedná o zánět děložního hrdla (cervicitida) v kombinaci s infekcí močové trubice (uretritida). Bez adekvátní léčby se ovšem mohou potíže rozšířit také do dalších oblastí.

K základním projevům kapavky u žen se řadí vaginální hnisavý výtok bíložluté barvy, svědění a zarudnutí postiženého místa, nepříjemná bolest při pohlavním styku, pálení při močení nebo třeba krvácení mimo menstruaci. Sliznice děložního hrdla po jakémkoliv mechanickém podráždění poměrně snadno krvácí a dochází také k častějšímu, ale obtížnému močení (polakisurie a dysurie).

Pokud se ženská kapavka správně neléčí pomocí antibiotik, zánět se může rozšířit také na endometrium dělohy a na vejcovody. Příznaky v takovém případě zahrnují horečku, nevolnost nebo třeba zvracení. U pacientky se pak rozvíjí chronický zánět malé pánve, jehož důsledkem mohou být silné křeče, zajizvení tkání a neplodnost.

Až polovina žen trpících kapavkou nicméně zaznamená pouze nenápadné příznaky nebo nepozoruje žádné viditelné obtíže, takže pak lékaři v jejich případě hovoří o asymptomatickém průběhu nemoci. Děložní čípek navíc nemusí vykazovat žádné změny. Jelikož pacientky netuší, že se u nich tato infekce rozvinula, mohou se poměrně snadno stát zdrojem nákazy pro své okolí. [10, 11, 12, 13]

5 méně známých pohlavních nemocí
Přečtěte si také:

5 méně známých pohlavních nemocí

Příznaky kapavky u novorozenců

Přestože se kapavka nejčastěji šíří pohlavním stykem, infikované ženy mohou toto onemocnění přenést také na novorozence, a to konkrétně během porodu (při průchodu miminka porodními cestami). To se u malých dětí nejčastěji projeví jako konjunktivitida, což je specifický typ oční infekce (hnisavý zánět spojivek), který může vést až ke slepotě.

Právě z toho důvodu se na našem území všem novorozencům těsně po porodu preventivně aplikují antibakteriální kapky (Opthalmo-Septonex), což by mělo rozvoji infekce zabránit. Kromě toho jsou ovšem miminka ohrožena také jinými komplikacemi. Dalším způsobem, jak se projevuje kapavka u novorozenců, je tedy například gonokokový zápal plic, diseminovaná infekce nebo faryngitida (zánět hltanu). [14, 15, 16, 17]

Extragenitální kapavka

Jak už bylo zmíněno výše, příznaky kapavky jsou nejčastěji patrné v oblasti močového a pohlavního ústrojí, ale mohou postihnout také další části lidského těla. Sem patří především konečník (rektum), ale i hltan (farynx) nebo třeba oční spojivky. Příznaky daného onemocnění se pak liší podle toho, kterou z těchto oblastí bakterie Neisseria gonorrhoeae postihne.

Při zasažení konečníku, k čemuž dochází při provozování análního styku, se objevuje hlavně svědění, nepříjemná bolest při defekaci, výtok nebo křeče. Během orálního styku se navíc může infekce přenést také do pacientova hrdla, kde vzniká hnisavá faryngitida. Pokud jde o to, jaké má kapavka v krku příznaky, typicky se jedná o projevy podobné klasické angíně.

Prostřednictvím autoinokulace, kdy se infekce přenáší dotykem z jednoho místa na pacientově těle na jiné, se pak kapavka může rozšířit také do očních spojivek. Na tomto místě se následně rozvíjí zánět, jenž bývá typicky jednostranný. Ten se projevuje podrážděním očí, bolestí a zvýšenou citlivostí, otokem očních víček, zarudnutím a výtokem bělavého či žlutavého hnisu. [18, 19, 20, 21]

Možné komplikace

Neléčená kapavka může u obou pohlaví způsobit velmi závažné zdravotní problémy, které není radno podceňovat. Sem patří především diseminovaná gonokoková infekce, která postihuje zhruba 1 % nakažených. Jedná se přitom o hematogenní rozšíření gonokoků do kůže, kloubů a šlach, což se pojí s řadou nepříjemných projevů.

Výsledkem diseminované gonokokové infekce bývá artritida s dermatitidou, jež postihuje kolena, kotníky nebo třeba zápěstí. Pacienty pak trápí hlavně nepříjemné bolesti, potýkají se s vysokými horečkami a postižená oblast bývá výrazně zarudlá. Na pokožce se navíc objevují léze, které je možné zaznamenat i na loktech, prstech a chodidlech.

U žen patří k poměrně vzácným komplikacím například zánět parauretrálních žláz, přičemž vzácně dochází také k rozvoji parauretrálního abscesu nebo uretrovaginální píštěle. Pokud gonokoková infekce pronikne z děložního hrdla dále do děložní dutiny, na vejcovody, vaječníky a do jejich okolí, rozvíjí se hluboký pánevní zánět (PID). U těhotných žen se také může objevit vulvovaginitida.

U mužů se k nejčastějším komplikacím kapavky řadí výše zmiňovaná prostatitida či epididymitida, která může v nejhorším případě způsobit neplodnost. Objevit se ovšem mohou i různé druhy abscesů a píštělí a v neposlední řadě lékaři u obou pohlaví pozorují zvýšenou náchylnost k rozvoji jiných (a mnohdy závažnějších) sexuálně přenosných infekcí, jako je například nákaza virem HIV. [22, 23, 24, 25, 26, 27]

Zdroje: wikiskripta.eu, venerologie.cz, urologiepropraxi.cz, mocoveinfekce.cz, pubmed.ncbi.nlm.nih.gov, sciencedirect.com, healthline.com, my.clevelandclinic.org, cdc.gov, mayoclinic.org

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