Roupi napadají děti i dospělé jedince. Jak na účinnou léčbu?

10. 11. 2022 9:00
15 nových názorů
ručitel
MUDr. Daniel Petr | Odborný garant článku
„Léčba enterobiózy je poměrně jednoduchá. Při prevenci je důležité dodržování hygienických norem.“

Roupi, jedno z nejčastějších parazitárních onemocnění, postihuje pouze lidi, nejčastěji pak děti. Neubrání se mu však ani dospělí, přičemž průběh nákazy a léčby je u všech stejný. Onemocnění se projevuje zejména svěděním konečníku, které je nejsilnější v noci. Roupi jdou obvykle ruku v ruce se špatnými hygienickými návyky.  

Co jsou roupi a jak vypadají?

Roupi jsou paraziti, kteří způsobují tzv. onemocnění špinavých rukou (enterobiózu), tedy parazitární infekce vyvolané červem Enterobius vermicularis, kterému se říká roup dětský. Tento drobný asi centimetr dlouhý červ bělavé barvy parazituje u nakažených osob v konečném úseku tenkého a na začátku tlustého střeva, kde se živí bakteriemi a epitelem. Oplodněné samičky ukládají svá vajíčka do prostředí řitního otvoru, kde následně vajíčka dozrávají.

Roupi ve stolici se objevují především jako důsledek nedostatečné hygieny. Přenáší se přímým kontaktem s nakaženou osobou, popřípadě autoinfekcí, což znamená, že dotyčný jedinec se opakovaně sám nakazí. [1, 2, 3, 4, 5, 6]

Tasemnice parazitují v těle různých obratlovců. Jak se člověk může nakazit?
Přečtěte si také:

Tasemnice parazitují v těle různých obratlovců. Jak se člověk může nakazit?

Příznaky onemocnění

Jak poznat roupy? Pokud se u vás přímo neobjeví viditelní bílí červi ve stolici, projeví se dětští roupi, lidově dětské roupy, zpravidla svěděním sliznice a kůže v okolí konečníku, které se zhoršuje v noci. A co úporné svědění způsobuje? Nepříjemný projev je důsledkem toho, že samičky vylézají ze střev do oblasti řitního otvoru, kde kladou larvy, jež potřebují k životu kyslík. Toho se jim ve střevech nedostává. V důsledku silného svědění pak dochází k poruchám spánku, a tedy i vedlejším příznakům jako:

  • bolest hlavy,
  • neuróza,
  • u dětí noční pomočování (spíše méně obvyklé).

Inkubační doba u roupů se pohybuje kolem 2 týdnů, to jinými slovy znamená, že se první příznaky zpravidla objevují do 14 dnů od nákazy. Důsledkem onemocnění se mohou objevit i výtoky a záněty močových a pohlavních cest, kožní vyrážky a bolesti břicha či podráždění slepého střeva. [7, 8, 9, 10, 11]

Diagnostika

Základem diagnózy roupů je přímý průkaz vajíček roupů v oblasti konečníku. Existují dva způsoby prokázání existence roupů v těle nemocného a to tzv. Grahamovou metodou nebo Schueffnerovou odběrovou tyčinkou.

Měli jste někdy roupy?

Grahamova metoda se používá častěji u dětí a spočívá v otisknutí průhledné lepicí pásky na konečník, a to obvykle ráno ihned po stolici. Po sundání se páska přelepí na sklíčko mikroskopu, kde pracovníci laboratoře odhalí případná vajíčka. Vyšetřit se může také přímo vzorek stolice. A jelikož samička klade vajíčka do oblasti konečníku nepravidelně, může se vyšetření několikrát opakovat. [12, 13, 14, 15]

Léčba – jak se zbavit roupů?

Mikroskopické vyšetření u vás odhalilo červy ve stolici anebo snad máte podezření, že se u vás červi ve stolici vyskytují na základě úporného svědění? V obou případech neváhejte a vyhledejte lékaře, který vám diagnózu potvrdí a prokonzultuje s vámi nejvhodnější způsob léčby. Ta se neobejde bez medikamentů. Nejlépe působí na roupy léky s odčervovací funkcí.

A co na roupy bez předpisu? Na trhu existuje několik volně dostupných variant těchto léků.  Jsou jimi například:

Dále mohou pomoci jiné preparáty mebendazolu nebo albendazolu, nemusí však být vhodné pro všechny. Dát pozor by si měly především těhotné ženy.

Součástí léčby jsou také režimová opatření, bez kterých nebude léčba nikdy účinná. Jedná se o dodržování hygienických zásad, tedy o:

  • důkladné mytí rukou po toaletě, před jídlem,
  • pečlivé mytí celého těla, především pak konečníku,
  • stříhání nehtů na krátko.

Důležité je též vyvařování prádla a žehlení, střídání ručníků, osobního a ložního prádla. V případě onemocnění roupy je důležité, aby léčbu podstoupili všichni členové domácnosti. Svou roli hraje během léčby také omezení konzumace cukru, který roupi potřebují k přežití. Zvýšení příjmu zeleniny a vodnaté stravy je naopak přímo žádoucí.

Dokud nedojde k uzdravení pacienta, je také nutné pravidelně utírat prach, luxovat, protože vajíčka mohou ve vnějším prostředí přežívat až tři týdny. Jsou ale zároveň citlivá na světlo a chlad, proto je dobré často větrat a pouštět do bytu dostatek denního světla. [16, 17, 18, 19, 20, 21]

Prevence proti roupům

Základní prevence je osobní hygiena, která spočívá hlavně v pečlivém mytí rukou po návštěvě toalety. Dále je důležité:

  • mytí potravin,
  • časté praní povlečení,
  • pravidelná výměna pyžama a spodního prádla. [22, 23, 24, 25]

Komplikace spojené s roupy u dětí a dospělých

Pokud se léčba roupů nezahájí včas, může se objevit celá řada komplikací, mezi které patří třeba:

Při průniku nákazy do močových cest může dojít k zánětu močového měchýře, vzácně až zánětu ledvin[26, 27, 28, 29]

Zdroje: stefajir.cz, celostnimedicina.cz, nemoci.vitalion.cz, mayoclinic.org, healthline.com, my.clevelandclinic.org, wikiskripta.eu, pediatriepropraxi.cz, cdc.gov, kidshealth.org

Ema (neregistrovaný)
Dobrý den, několik let se mi vrací roupy, přestože je vždycky zaléčím Vermoxem. Co dělat, když léčba nepomáhá? Často se mi taky opakují záněty močových cest. Nemůže to mít spojitost? (Na hygienu dbám). Děkuji.
MUDr. Thai Bao Han (neregistrovaný)
Dobrý den, zkusila bych intenzivnější braní Vermoxu, např. á týden, dále byla přeléčena celá rodina? Doporučuji, aby všichni měli krátké nehty a všichni dodržovali důkladné mytí rukou. Na časté záněty močových cest doporučuji blokurimu a také cílenou antibiotickou terapii - tj. vždy vyšetřit kultivaci moči a dle citlivosti nasadit správná antibiotika.
Tereza Bernardová (neregistrovaný)
Dobrý den, měla bych dotaz, asi to u mého syna vypadá na roupi, ještě čekám na výsledky, které trvají. Máme střídavě průjmy, nebo stolice vypadá, že je v ní nestrávené jídlo a takový hlen a divěn zapáchá. Co mě hlavně utvrzuji je škrábání celého zadečku až skoro do krve, když ho hned neobléku. Píšete, že se nemusí hned ze stolice potvrdit, jelikož tam zrovna nemusejí byt nakladeny vajíčka. Je to tak - měla bych tedy trvat na dalších teste? proběhl teda i výtěr. moc děkuji syn je 16měsíců starý. A ještě jeden dotaz - mého syna myji a hygienu myslím dodržuji až přehnaně tak nechápu, kde bych mohla udělat chybu jak by to mohl dostat.
MUDr. Thai Bao Han (neregistrovaný)
Dobrý den, kromě sklíčka je nutné parazitologické vyšetření stolice 3x za sebou - pokaždé z jiné stolice, vyšetření je poměrně rychlé. Pokud má lékař podezření na roupy a odběr biologického materiálu už proběhl, tak bych nevyčkávala s Vermoxem (přeléčení celé rodiny). Nutné u dítěte mít krátké nehty a důkladný hygiena rukou. Vhodné jsou Fenistilové kapky na svědění. Dif. dg. svědění zadečku můžou dělat i úporné průjmy, vhodné je i vyšetření alergii, intolerancí, celiakie, vyloučení infekce (střevní panel, výtěr z rekta), sledovat, jak dítě prospívá, atd...
Stázi (neregistrovaný)
Mohu podání 1. tablety Vermoxu 5 hodin před prvním projevem následných 3 hodinových totálně průjmových (jen tekutina) stavů považovat za úspěšně zahájenou léčbu dětských roupů, nebo mám tabletu aplikovat znovu a zaznamenat ji jako první dávku?
  • 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 »