Neštovice – virus je v těle mnohem dřív, než se objeví první pupínky

Sdílet

Inkubační doba planých neštovic trvá i tři týdny. K přenosu virů vzdušnou cestou dochází den až dva před a pět dnů po nástupu vyrážky. Kdo neštovice jednou prodělá, a to i v mírné formě, má pravděpodobně doživotní ochranu. U dospělých bývá průběh neštovic vážnější, proto lékaři doporučují očkování.

Plané neštovice zpravidla bereme jako nepříjemnou nutnost, kterou si musí projít každé dítě. Protilátky lze získat buď očkováním, nebo proděláním infekce, po níž je druhá nákaza neštovicemi vysoce nepravděpodobná. Nemoc probíhá většinou bez komplikací, ale v některých případech může mít infekce závažnější průběh. „V největším riziku jsou nedonošení novorozenci. Nebezpečná může být i nákaza ženy v rámci prvních pěti měsíců gravidity, také posledních pět dnů těhotenství a první dva dny po porodu, kdy u dítěte může vzniknout vrozená varicella se smrtelnými komplikacemi,“ uvádí Rastislav Maďar, specialista v oboru epidemiologie, prevence a kontroly infekčních nemocí.


Autor: Archív Rastislava Maďara

„Jako lékař i rodič jsem přesvědčený, že je vždy lepší nemoci se vyhnout,“ říká epidemiolog Rastislav Maďar k záměrnému vystavování dětí nákaze planých neštovic na tzv. neštovicových dýcháncích

Těžší průběh planých neštovic může způsobit oslabená imunita, a to nejen její dlouhodobá porucha. „V daný moment může být faktorem oslabujícím obranyschopnost organizmu jiná infekce, která se dosud nemusela navenek projevit, například jiná viróza ve stadiu inkubační doby,“ podotýká lékař.

Existuje sezóna neštovic, nebo se mohou vyskytnout v kterémkoliv období?

Výskyt planých neštovic je celoroční, v chladném období se však vyskytují častěji, protože děti se víc pohybují v uzavřených prostorách v těsnějším kontaktu, který je pro šíření viru vhodnější. Epidemie neštovic se objevují hlavně koncem zimy a zjara.

Plané neštovice se projevují zvýšenou teplotou, celkovou únavou a četnou vyrážkou. Vyrážka se vysévá ve vlnách po dobu 2–6 dnů, svědí a postupně se mění v pupínky a stroupky. K výsevu dochází nejprve v oblasti hlavy (obličej, vlasy, víčka), později na hrudníku, někdy na celém trupu.

Zdroj: www.ockovacicentrum.cz

Je prodělání neštovic obecně nebezpečnější pro nejmenší děti, nebo na věku až tak nezáleží?

Nedá se to říct úplně jednoznačně. Nákaza hrozí zejména kojencům, jejichž matky předtím neštovice neprodělaly nebo proti nim nebyly očkovány, děti tak od nich nezískají do prvních měsíců života imunitu. Pokud tedy dítě nezíská protilátky od matky, má nákaza nejmenších dětí v prvních týdnech života potenciál probíhat závažněji než ve věku tří let. Je to hlavně proto, že imunitní systém kojence se vyvíjí postupně do dvou let věku.

Kdy jste prodělali neštovice?

Těhotné ženy se však očkovat nesmí, a pokud žena graviditu plánuje, nedoporučuje se početí jeden měsíc po aplikaci vakcíny.

Platí, že po prodělané infekci získává člověk doživotní imunitu? A co je pravdy na tom, že u dětí do jednoho roku se neštovice ještě později vrátí?

Po prodělané infekci je druhá nákaza neštovicemi vysoce nepravděpodobná. Už i proto, že skoro každý z nás se s virem v životě potká opakovaně a u imunní osoby, ať už následkem prodělané nemoci, nebo očkováním, vede kontakt s původcem ke zvýšení hladiny protilátek a posílení ochranné imunity. To platí i pro nejmenší děti.

Jak spolu souvisí neštovice a pásový opar?

Za pásový opar může aktivace viru planých neštovic, který po prvotní nákaze zůstává po celý zbytek života v nervové tkáni míšních nervů a při oslabení imunity odtud putuje podél nervových drah. Je to nepříjemný a často velmi bolestivý stav, který může přetrvávat i několik měsíců. K bolestivým vjemům přirovnávaným k zásahu elektrickým proudem může docházet i dlouhou dobu po vymizení vyrážky, bolest vyvolává dotyk oblečení, postříkání vodou při osobní hygieně nebo někdy dokonce i průvan.


Autor: Isifa.cz

Pásový opar se objeví vždy podél nějakého nervu a většinou výrazně bolí

TIP: Pásový opar si vybírá oslabené jedince

Není očkování proti neštovicím u dětí tak trochu zbytečnost? A kdy jsou k tomu naopak rozumné důvody?

Když máme k dispozici prověřenou metodu umožňující dosáhnout, aby dítě nebylo akutně nemocné, a navíc tím snížíme pravděpodobnost pozdějšího výskytu pásového oparu, měli bychom jí využít. V USA je vakcinace proti planým neštovicím v očkovacím kalendáři a nemocných je tam díky tomu méně než u nás. Onemocnět nemůže být nikdy lepší než zůstat zdravý. Pro dítě nemusí být plané neštovice lehkou epizodou. Moje neteř měla ve věku čtyř let vyrážku na kůži i sliznicích, v puse i genitálu, týden měla horečky, pila přes brčko, plakala a trpěla. U syna jsem to rozhodně připustit nechtěl, ale očkovaný byl nejen proto. Virus varicelly může způsobit i vážnější komplikace, například zánět plic, jater, nebo dokonce i mozku a mozečku. Nepříjemná může být i podkožní flegmona.

Má očkování smysl ještě v případě, když už se neštovice v kolektivu vyskytly?

Vakcína poskytne ochranu i po kontaktu s virem, a to do tří dnů. Problémem je, že nakažená osoba vylučuje virus vzdušnou cestou už jeden až dva dny před prvními příznaky, takže to, co se považuje za první kontakt s virem na základě výsevu vyrážky, může být ve skutečnosti o 24 až 48 hodin dříve. Pokud se u kamaráda ze školky objevily neštovice v pátek, první kontakt s virem mohl být už ve středu a do pondělí očkování nepočká. I pokud se však vakcína podá o něco později než uvedených 72 hodin, může alespoň zmírnit průběh nákazy a infekčnost dítěte pro okolí.

Smrtelně nebezpečné pravé neštovice, které se v sedmdesátých letech 20. století podařilo na naší planetě vymýtit, způsoboval virus varioly. Původcem planých neštovic je herpetický virus varicella/zoster označovaný i jako herpes virus 3. S pravými neštovicemi má podobný způsob přenosu vzdušnou cestou a dotekem s puchýřky na kůži obsahujícími tekutinu nebo pro laika podobným klinickým obrazem, odborník je však většinou dokázal odlišit už pohledem, např. podle odlišných míst zvýšené koncentrace výsevu vyrážky.

Galerie: Pupínky na obličeji, které byste neměli zaměňovat

Nakažlivost neštovic je hodně vysoká, uvádí se až 90 %. Čím si vysvětlit, že někdo je zkrátka nechytne? Je to otázka dobré imunity? Máme ale nechat například dospívající v takovém případě raději očkovat, když u dospělých mají neštovice údajně horší průběh? 

Plané neštovice dostane téměř každý kontakt nemocného. Pacientů se zájmem o očkování, kterým rodiče tvrdí, že je neměli, se proto ptáme, jestli byli někdy v blízkosti akutně nemocné osoby, například spolužáka nebo sourozence. Pokud ano, odebíráme jim krev na protilátky a v drtivé většině jsou pozitivní, takže je očkovat nakonec nemusíme. Plané neštovice tehdy dostali, jen měli mírnější formu s nevýznamně zvýšenou teplotou a několika vyrážkami např. ve vlasové části hlavy, kde si jich rodiče nevšimli. S vyšším věkem závažnost průběhu neštovic narůstá, proto je všechny starší děti a dospělé bez přítomnosti protilátek v krvi vhodné očkovat.

Takže tvrzení, že kdo prodělal neštovice právě v takové mírné formě, tomu se v budoucnu ještě vrátí, je mýtus?

I když nemoc probíhá mírněji, pravděpodobnost doživotní ochrany je vysoká. I kvůli tomu, že v průběhu života dochází k přirozené imunizaci opakovaným kontaktem s dalšími infekčními osobami a tím k navýšení hladiny protilátek. Závažnost onemocnění tedy není přímým indikátorem délky protekce.

Je nutné s neštovicemi navštívit pediatra, když víme, že nemoc odezní sama a léčí se pouze projevy?

Pacient s infekční nemocí by ideálně neměl jít do čekárny a ordinace lékaře. Konzultovat lze daný stav a jeho léčbu s lékařem telefonicky, případně může praktický lékař pro děti a dorost navštívit dítě doma. Většinou to rodiče v domácích podmínkách zvládnou.


Autor: Isifa.cz

První pupínky planých neštovic se objeví dva až tři týdny po nákaze, vyrážka se vysévá ve vlnách po dobu 2–6 dnů

Co je na neštovice nejlepší? Tekutý pudr, nebo fialka (genciánová violeť, tzv. genciánka)? Pudr prý uleví od svědění, ale nevysuší mokvavý pupínek tak jako fialka. Jaký máte názor?

Doporučuje se suchý pudr a na svědění antihistaminika jak v lokální, tak případně i v celkové formě. Proti horečce antipyretika. U těžších stavů je možné použít i antivirotika. Důležité je zabránit rozškrábání kvůli riziku sekundární bakteriální infekce a samozřejmě taky vzhledem k možnému vzniku jizvy. Je proto potřeba udržovat hygienu kůže a zastřihovat dětem nehty.

TIP: Neštovice – od kdy mazat? Čím mazat? A mazat vůbec? 

Uvádí se, že inkubační doba u neštovic je dlouhá. Kdy nejdříve a nejpozději se neštovice mohou po kontaktu s nemocným projevit?

Inkubační doba je interval, který uplyne od vniku viru do těla nakažené osoby po projevení se prvních příznaků. Pohybuje se od 12 do 25 dní. Nemoc se tedy skutečně může projevit až za dva nebo tři týdny od nákazy.

Jak dlouho je nutné zůstat při neštovicích doma a kdy už můžeme ven? Dokdy je dítě infekční?

K přenosu virů vzdušnou cestou dochází prvních pět dnů po nástupu vyrážky. Následně jsou infekční formou vezikulky, tedy puchýřky na kůži s obsahem tekutiny. Když zaschne poslední z nich, může dítě opustit izolaci, i když kůže ještě není čistá. Obvykle trvá izolace kolem osmi dnů.

Plané neštovice jsou vysoce infekční nákazou a přenos v rámci rodiny na všechny vnímavé osoby lze očekávat. Vakcínu lze aplikovat už od devíti měsíců věku, většinou se ale podává se spalničkovou trojvakcínou, nebo až po ní.

Více o očkovacím kalendáři: Očkování se od ledna 2018 zásadně mění

Jaký názor máte na to, že někteří rodiče jdou neštovicím „naproti“ a schválně navštíví s dítětem nemocné sousedy, aby si tuto nemoc „odbyli“?

Jako lékař i rodič jsem přesvědčený, že je vždy lepší nemoci se vyhnout. Tito lidé chtějí pro své dítě to nejlepší a přitom je vlastně nesmyslně vystavují nemoci, která může jejich organizmus značně zatížit. Nikdo si nemůže být jistý, že to bude probíhat bez komplikací. Stačí v daném okamžiku oslabená imunita dítěte a potenciální problém je na cestě.

Doc. MUDr. Rastislav Maďar, Ph.D., MBA, FRCPS

Vedoucí Ústavu epidemiologie a ochrany veřejného zdraví LF Ostravské univerzity. Působí jako odborný garant center Očkování a cestovní medicíny Avenier, předseda Koalice pro podporu očkování, předseda redakční rady časopisu Očkování a cestovní medicína a předseda International Humanity.

Autor článku

Psaní článků pro internetové magazíny se věnuje již od roku 2010. Na serveru Vitalia.cz se zaměřuje zejména na zdravotní problematiku.

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