Kvasinková infekce v intimních partiích trápí ženy i muže. Jak ji léčit?

1. 4. 2023 7:30
7 nových názorů
Ilustrační obrázek
Autor: VitalikRadko – Depositphotos
Ilustrační obrázek

Mykóza neboli kvasinková infekce je onemocnění způsobené patogenními houbami. Zatímco povrchové mykózy postihují kůži a viditelné sliznice, hluboké kvasinkové infekce se projevují hlavně na pohlavních orgánech. Mezi nejčastější příznaky patří pálení a svědění v intimní oblasti, což může mít velmi nepříjemný vliv na sexuální i běžný život pacientů.

Původcem kvasinkové infekce jsou ve většině případů kvasinky z rodu Candida, nejčastěji jde o druh Candida albicans. Proto se tomuto onemocnění také jinak říká kandidóza. U zdravých lidí se kvasinky běžně nacházejí jako součást přirozeného mikrobiálního osídlení kůže a sliznic. Když se však přemnoží, může to znamenat velké problémy.

Kvasinková infekce častěji trápí něžné pohlaví, alespoň jednou za život se s ní musí potýkat až 75 % žen. Kromě toho má tato nemoc také tendenci se vracet. Mykóza u mužů sice není tak častá, ale i tak se jedná o velmi nepříjemné onemocnění. V případě mužských genitálií totiž kandidóza postihuje žalud a předkožku.

Máte zkušenost s kvasinkovou infekcí pohlavních orgánů?

Ačkoliv se mykóza nepovažuje za pohlavně přenosnou chorobu, mohou ji chytit oba partneři a prostřednictvím pohlavního styku ji na sebe neustále znovu přenášet. V poslední době navíc počet těchto onemocnění stoupá v důsledku používání širokospektrálních antibiotik, kortikosteroidů, cytostatik a chirurgických výkonů s následnou imunosupresí, jako je například transplantace. [1, 2, 3, 4, 56]

Příčiny kvasinkové infekce

Mykóza vzniká ve chvíli, kdy se v těle pacienta přemnoží kvasinky. Těm se skvěle daří v teplém a vlhkém prostředí bez přístupu vzduchu, takže například pokud dojde ke zvýšení pH v oblasti pochvy. Jaké má tedy kvasinková infekce příčiny?

Mezi nejčastější příčiny mykózy patří oslabená imunita v kombinaci s dalšími vlivy, jako je stres, nevhodná strava či některá onemocnění. Na vznik onemocnění dále mohou mít vliv:

  • antibiotika – může nastat nerovnováha poševního prostředí a dojde k přemnožení kvasinek,
  • hormonální změny – vyšší hladina estrogenu například v těhotenství nebo pokud žena užívá antikoncepci s větším množstvím estrogenu,
  • zapaření genitálií v důsledku nošení nevhodného prádla a oblečení (příliš těsné kalhoty, mokré plavky…),
  • nesprávná hygiena – nedostatečné nebo příliš časté mytí genitálií,
  • nevhodné používání některých druhů kosmetiky,
  • přecitlivělost na parfémované vložky, tampóny či toaletní papír,
  • léky potlačující imunitu (kortikosteroidy…),
  • zvýšený příjem cukru například v podobě sladkostí,
  • cukrovka. [7, 8, 9, 10, 11, 12]

Vaginální mykóza

Kvasinková infekce pochvy patří mezi nejčastější problémy, které přivádí něžné pohlaví do gynekologických ordinací. Pokud totiž v pochvě dojde k přemnožení kvasinek, nastane vaginální nerovnováha a objeví se zánět. Pokud přemýšlíte, jak poznat mykózu a jaké má mykóza příznaky, napovědět vám mohou některé z následujících symptomů.

Typické příznaky vaginální mykózy

  • svědění pochvy – ve vnitřní i vnější oblasti,
  • pálení (například při močení),
  • otok a zarudnutí vnější části genitálu,
  • bílý hrudkovitý výtok, který svou konzistencí připomíná tvaroh,
  • tlak a bolesti v podbřišku,
  • bolest při pohlavním styku.

Léčba vaginální mykózy

Léčba vaginální kvasinkové infekce je většinou poměrně jednoduchá. Hlavní je stanovit správnou diagnózu, protože příznaky poševní mykózy mohou být podobné jiným onemocněním. Pacientka buď může zvolit samoléčbu, nebo pro jistotu navštívit gynekologa. Lékařské ošetření je nutné:

  • v těhotenství,
  • u mladistvých či při prvním onemocnění mykózou,
  • pokud pozorujete netypicky zapáchající výtok,
  • pokud nemoc neustupuje ani po aplikaci léků.

Jak se zbavit kvasinek v pochvě, které ženám způsobují nepříjemné obtíže, a co na kvasinkovou infekci nejlépe pomáhá? Vaginální mykóza u žen se nejčastěji léčí pomocí antimykotik, což jsou léky dostupné ve formě vaginálních čípků nebo krémů. Ty se aplikují buď do pochvy, nebo na její vnější část.

V lékárně si můžete koupit léky na kvasinkovou infekci bez předpisu, přičemž do této skupiny patří například Canesten nebo Gyno Pevaryl. Žena by měla léčbu zahájit okamžitě po zpozorování prvních příznaků a pokračovat podle pokynů na příbalovém letáku, i když potíže vymizí.

V některých případech se pak léčba odvíjí také od toho, jaké má poševní mykóza příznaky. Používají se například speciální tablety, které jsou na lékařský předpis. Při svědění je dobré vyzkoušet také přípravek Rosalgin, který je určený k výplachům ženského pohlavního ústrojí. Pokud se u vás však kvasinkové záněty neustále opakují, je nutné zvážit změnu životosprávy a dlouhodobou léčbu.

Ačkoliv se vaginální mykotická infekce nepovažuje za pohlavně přenosnou chorobu, mohou tímto onemocněním trpět oba partneři a opakovaně ho jeden na druhého přenášet prostřednictvím pohlavního styku. Proto se po nějakou dobu doporučuje sexuální zdrženlivost a léčba obou partnerů současně. Muž může být pouze přenašečem onemocnění bez jakýchkoliv viditelných příznaků.

Kvasinková infekce a domácí léčba

Jaká je u kvasinkové infekce léčba doma? Při léčbě poševní mykózy může pomoci například tinktura z grepových jader, česneku či ořešáku černého. Pro posílení imunity se dále užívá čaj Lapacho, nebo různé bylinky jako třeba echinacea a oregano. Babské rady na svědění pochvy a kvasinkovou infekci doporučují také nálev z řapíku, do kterého se přimíchá tinktura z grepových semínek, nebo bílý jogurt s živými kulturami aplikovaný přímo do pochvy.

Mykóza v těhotenství

V průběhu těhotenství je v ženském těle přítomná vyšší hladina estrogenů, která způsobuje změny pH v pochvě. Proto se těhotné ženy s vaginální kvasinkovou infekcí setkávají poměrně běžně. Díky snadno odhalitelným příznakům je však léčba většinou zahájena včas.

Těhotné ženy, které trpí mykózou v pochvě, se nemusí bát toho, že by tato nemoc měla vliv na porod dítěte. Kvasinky totiž nezvyšují riziko předčasného porodu a nepředstavují velký problém ani pro donošené novorozence. [13, 14, 15, 16, 17, 18, 19]

Trápí vás mykóza kůže či nehtů? Přečtete si, jak se jí zbavit
Přečtěte si také:

Trápí vás mykóza kůže či nehtů? Přečtete si, jak se jí zbavit

Kvasinková infekce u mužů

Mykóza penisu není příliš častá, ale mužům i tak způsobuje velmi nepříjemné problémy. Projevuje se především ve formě zánětu předkožky žaludu, její příznaky ovšem obvykle zůstávají skryté. Odhalit toto onemocnění proto bývá složité, na jeho přítomnost ale může poukázat neustále se vracející infekce u partnerky.

Jak poznat kvasinkovou infekci u mužů? Kvasinková infekce penisu může mít mnoho podob, mezi nejčastější příznaky však patří svědění a pálení v intimních partiích, otok, zarudlá kůže, červené pupínky či bílé skvrny na žaludu. Předkožka se navíc těžko přetahuje a vzniká pod ní hrudkovitý a zapáchající sekret. K dalším doprovodným projevům patří i bolest při močení a při sexu.

Problém je, že někteří muži se před pohlavním stykem ani po něm nemyjí a během koupele si nepřetahují předkožku, aby si omyli žalud. Jelikož je vyrážka a pupínky navíc často nesvědí ani nepálí, většinou si řeknou, že o nic nejde a situaci dále neřeší, což je samozřejmě špatně (nejen pro ně, ale i pro partnerku).

Léčba kvasinkové infekce u mužů

Jak se zbavit kvasinkové infekce u mužů? Při podezření na mykózu penisu se pacienti nemusí bát obrátit se na lékaře, který provede několik testů nebo rovnou na základě příznaků zahájí léčbu. Stejně jako u žen se doporučují léky ve formě antimykotických mastí nebo tablet. Pokud jde o prášky, lékaři předepisují ketokonazol, flukonazol, klotrimazol či mikonazol. [20, 21, 22, 23, 24]

Jak kvasinkové infekci účinně předcházet?

Existuje několik různých věcí, které můžete udělat, abyste předešli vzniku kvasinkové infekce. Základem prevence je samozřejmě dodržování intimní hygieny. Snažte se vyhnout agresivním přípravkům, parfémovaným toaletním papírům, vložkám a tampónům, vhodné jsou naopak speciální gely určené pro mytí intimních partií. Důležité je také dodržovat hygienu před pohlavním stykem i po něm.

Dále je nutné vhodně se oblékat, nosit vzdušné prodyšné oblečení a vyhýbat se těsnému spodnímu prádlu či prádlu z umělého materiálu. Nevhodné jsou také těsné kalhoty a punčochy. Po koupání si co nejrychleji sundejte plavky nebo vlhké prádlo, důkladně se osušte a převlékněte se do suchého prádla, nejlépe z bavlny.

Významnou roli hraje i zdravý životní styl. Nepřehánějte to se sladkostmi a vynechte raději sladké nápoje. Pokud je váš organismus oslabený nebo užíváte antibiotika, zkuste doplňky stravy, které zvýší vaši obranyschopnost. Jako prevence či podpora v léčbě je vhodná také protiplísňová dieta. [25, 26, 27, 28, 29, 30, 31]

Zdroje: canesten.cz, nemoci.vitalion.cz, gynella.com, venerologie.cz, stefajir.cz, gynprenatal.cz, rosalgin.cz, nzip.cz, cdc.gov, medicalnewstoday.com, healthline.com, my.clevelandclinic.org

anna Nováková (neregistrovaný)
Dobrý den, měla jsem před rokem a půl vaginální mykozu a pomohli mi ji výlečit v gynekologii https://www.ginnova.cz/ . Všem doporučují :) Opravdu příjemný a profesionální přístup
Dana (neregistrovaný)
dobrý den,léčím se s cukrovkou a trpím svěděním pochvy.Diabetoložka mě varovala,že je to možné a že by to mělo odeznít,ale horší se to.Můžete mi poradit co s tím?Po každém močení se myji,ale opět se to vrací.
Redakce Zdraví.Euro.cz (neregistrovaný)
Dobrý den, Dano, pacientky s diabetem na tento problém poměrně často trpí. Hlavní je mít správně léčený diabetes. Myjte si genitálie pouze čistou vodou bez žádných mycích prostředků a doporučujeme pravidelně používat vaginální laktobacily (ve formě tabletky nebo tobolky). Jsou volně prodejné a v lékarně Vám poradí. Redakce Zdraví.Euro.cz
Vít Veselý (neregistrovaný)
Dobrý den, již delší dobu se léčím z mykozy penisu a potřeboval bych poradit. Ze začátku mi stačil canesten, ale časem se mykoza opět vrátila a už delší dobu používám intimní gely a k tomu masticku podobnou canestenu s klotrimazolem. A i přes dlouhodobý proces se to vůbec nejlepší. Mám v plánu s tím zajít k doktorce, ale ještě nebyl čas, a tak se ptám, jestli by jste mi mohli nějak poradit. Mykóza se projevuje především bílým povlakem, který se vytváří většinou za pár hodin a při mytí se mění na hrudky jak píšete. Občas bývá i zarudlý, ale to jen v méně případech. Děkuji za odpověď.
Redakce Zdraví.Euro.cz (neregistrovaný)
Dobrý den, pane Veselý, vyšetření na dermatologii je na místě, protože je možné, že např. vaše kvasinková infekce je již rezistentní na volně dostupný canesten či na zánětlivé místo nasedla další infekce. Lékař vám po vyšetření předepíše nejlepší cílenou léčbu. Redakce Zdraví.Euro.cz
  • 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 »