Kdy očkovat proti planým neštovicím a u koho to má smysl

1. 8. 2023

Sdílet

Plané neštovice
Autor: Depositphotos
Plané neštovice
Neštovice se i letos objevují během prázdnin a dovolených. Spolu s vysokými počty nemocných dětí to rodiče častěji přivádí k otázce, zda nákaze kvůli dlouhé inkubační době a možným komplikacím předejít očkováním, byť ho zdravotní pojišťovny neplatí. Kdy je na něj nejlepší čas a může zajistit doživotní ochranu jako prodělaná nákaza?

Rok 2022 byl, co do počtu nakažených planými neštovicemi, rekordní. Po dvou letech proticovidových opatření, kdy počty nákaz planými neštovicemi šly rapidně dolů, protože ubylo kontaktů ve školách a školkách, bylo zejména mezi dětmi nezvykle vysoké množství těch, které neštovice neprodělaly. A protože jsou plané neštovice velmi nakažlivé a mají snadný způsob šíření (kapénkami i skrze předměty), šířily se mezi značnou skupinou nenakažených ve vyšší míře, než je obvyklé.

Co se dozvíte v článku
  1. Pro koho je očkování benefitem
  2. Vakcína není hrazená
  3. Příspěvky pojišťoven na očkování
  4. A co nechat nákaze volný průběh?
  5. Stručně o planých neštovicích

Podle statistik Státního zdravotního ústavu se letos do konce června planými neštovicemi nakazilo 29 345 lidí. Loni to touto dobou bylo 42 005 a za celý rok celkem eviduje zdravotní ústav 57 055 nemocných. Navíc sezóna této nákazy poznamenala loni i letos také prázdninové dovolené, což v jiných letech v takové míře nebývalo zvykem. Plané neštovice se šíří spíše v zimních měsících, kdy častěji pobýváme v uzavřených prostorách, jež jsou obecně pro šíření původců nemocí příznivé.

Následkem divoké sezóny bylo, že rodiče a někteří dospělí, kteří si nákazou neprošli v dětství, měli větší zájem o očkování. Zvýšená poptávka v kombinaci s výpadkem dodávek na straně výrobce způsobily, že už před loňskými prázdninami praktičtí lékaři hlásili, že jim došla vakcína Varilrix, tehdy jediná proti planým neštovicím na tuzemském trhu. V ČR není dostupná dosud, byť databáze lékového ústavu říká, že od poloviny letošního května jsou dodávky obnoveny.

Neznamená to ovšem, že zájemci o očkování mají smůlu. Jako náhrada se používá očkovací látka s názvem Varivax určená pro děti od 12 měsíců a dospělé. Tou se loni doočkovávaly i děti, které jako první dávku dostaly Varilrix, protože obě očkovací látky jsou zaměnitelné.

Varivax je na českém trhu od loňského června a v současné době je jedinou dostupnou vakcínou proti planým neštovicím. Základní očkovací schéma počítá se dvěma dávkami s rozestupem čtyř až osmi týdnů. Interval dalšího přeočkování nebyl stanovený. Existuje předpoklad, že ochrana je dlouhodobá. „Je téměř celoživotní. Kdo je očkovaný, zpravidla planými neštovicemi nikdy neonemocní,“ říká předseda České vakcinologické společnosti Roman Chlíbek.

Po kterém očkování získáte doživotní imunitu a už nikdy na něj nemusíte jít znovu Přečtěte si také:

Po kterém očkování získáte doživotní imunitu a už nikdy na něj nemusíte jít znovu

Pro koho je očkování benefitem

Pokud se rodiče u dosud nenakažených dětí rozhodnou jít cestou očkování, pak jsou k tomu ideální dvě období. První je před nástupem do jeslí nebo školky. „Protože v kolektivních zařízeních je šance na nákazu poměrně velká,“ uvádí lékař.

Další období je podle Romana Chlíbka adolescentní věk. Tedy někdy kolem 12. roku, protože takto načasované očkování dětem zajistí dostatečnou ochranu pro dospělý věk. „Pokud do té doby plané neštovice dítě neprodělalo, nechal bych dítě očkovat už jen z pozice toho, že v dospělém věku má infekce těžší průběh a nehorší je, když se dívka nakazí během těhotenství, protože přes placentu může krví matky dojít k nákaze plodu a následkem toho k jeho abnormálnímu vývoji, poškození jeho vnitřních orgánů nebo předčasnému porodu,“ popisuje předseda vakcinologické společnosti. Při onemocnění těsně před porodem se může dítě nakazit planými neštovicemi při porodu. Pro novorozence je infekce život ohrožující.

„Potkali“ jste plané neštovice? Inkubační doba je 10 až 21 dní Přečtěte si také:

„Potkali“ jste plané neštovice? Inkubační doba je 10 až 21 dní

Pavel Dlouhý, předseda Společnosti infekčního lékařství a primář infekčního oddělení ústecké nemocnice, doplňuje rizika průběhu nákazy u dospělých. „U nich při planých neštovicích dochází častěji k zápalu plic a celkově rozsáhlému, těžkému výsevu vyrážky na kůži a závažnějším projevům,“ podotýká lékař.

Důvodem pro očkování je často nejen motivace chránit sebe či v budoucnu své nenarozené dítě, ale také předejít dlouhé inkubační době onemocnění. Od nakažení po první projevy onemocnění totiž mohou uplynout i tři týdny. Rodiny s malými dětmi proto někdy téměř měsíc řeší, zda po kontaktu s nakaženým mohou odjet např. na dovolenou či absolvovat návštěvu u jiné rodiny s malými dětmi, které dosud plané neštovice neprodělaly.

Vakcína není hrazená

Vakcína v tuto chvíli není hrazena z veřejného zdravotního pojištění. A to ani nejmenším dětem, jež jsou na virus způsobující plané neštovice nejvnímavější. Snáze se tedy nakazí.

Pojišťovny ale na toto očkování nabízí příspěvky z fondů prevence. Ty proplácí zpětně (tj. až po očkování) a většinou pokrývají jen část ceny za obě dávky. Cena se obvykle pohybuje od 1500 Kč za jednu dávku, potřeba jsou u dětí i dospělých dávky dvě.

Kdy jste prodělali neštovice?

Příspěvky pojišťoven na očkování

Pojišťovna – roční výše příspěvku

  • VZP – na očkování proti planým neštovicím poskytuje až 500 Kč

Ostatní pojišťovny poskytují příspěvky na nehrazená očkování obecně. Jde o tyto částky:

  • ZP MV ČR – až 2000 Kč pro děti i dospělé
  • OZP – až 1000 Kč 
  • ČPZP – do 17 let včetně je to až 1500 korun, nad 18 let až 1000 korun 
  • VoZP – do 18 let až 1500 Kč, nad 18 let až 700 Kč 
  • RBP – až 1000 Kč, dárci krve až 6000 Kč 
  • ZP Škoda – až 1200 Kč na jednu dávku

Zdroj: Vitalia.cz / weby zdravotních pojišťoven

A co nechat nákaze volný průběh?

Většina rodičů volí cestu, že děti neočkují a nákaze nechávají volný průběh. Infekčnost viru varicella zoster, tedy původce planých neštovic, ale i pásového oparu, je tak vysoká, že se jí nakazí až na výjimky každý. A velmi pravděpodobně to bude ve školce nebo na prvním stupni základní školy. V tomto věku se děti dokáží uzdravit většinou samy a projevy onemocnění lze bez větších potíží zvládnout doma.

Podle Romana Chlíbka je to legitimní cesta. Infektolog Pavel Dlouhý se kvůli možným komplikacím nákazy kloní spíše k očkování.

Ačkoliv jsou plané neštovice považované za onemocnění s mírným průběhem, někdy to neplatí. „Některé děti končí v nemocnici kvůli vysokým horečkám, dehydrataci nebo kvůli tomu, že na puchýřky může nasednout bakteriální infekce způsobená např. streptokoky,“ popisuje primář Infekčního oddělení Masarykovy nemocnice v Ústí nad Labem.

Právě komplikace spojené s bakteriální infekcí lékaři vidí v posledních měsících častěji, než bývalo zvykem. „Jde o relativně závažné infekce, jež jsou vzácné – jde o jednotky případů. Mohou ale vyústit až v šokový stav či otravu krve, což jsou život ohrožující stavy,“ dodává Pavel Dlouhý s tím, že takový výskyt těžkých stavů v tomto počtu jsou v praxi infektologů relativní novinkou.

Mezi komplikace onemocnění u dětí patří také zánět mozečku, tedy cerebritida neboli zánět mozkových blan„Při něm dítě kromě horeček a zvracení trpí ztrátou rovnováhy – motá se, jako by bylo opilé, a padá,“ popisuje infektolog.

Rizikovější jsou plané neštovice pro pacienty s kožními problémy„Má-li někdo např. atopický ekzém, může docházet k velmi závažnému průběhu s velmi rozsáhlým výsevem vyrážky na hlavě, na krku… A bývá to pro nemocné velmi nepříjemné,“ říká Pavel Dlouhý.

Stručně o planých neštovicích

  • Po setkání s nakaženým počítejte s inkubační dobou až 3 týdny.
  • Infekční je pacient zhruba tři dny před výsevem vyrážky a cca týden poté. Tedy v době, kdy jsou puchýřky ještě vodnaté. Jakmile začnou zasychat a objeví se strupy, pacient již infekční není.
  • Puchýřky se mohou objevit také např. na sliznicích uvnitř úst, takže pro nemocného je někdy obtížné po určitou dobu jíst a pít. 
  • Lékaři nyní již nedoporučují používání tekutých pudrů, podle primáře Pavla Dlouhého je vhodnější třeba tzv. genciánová violeť. Stroupky lze následně promašťovat krémem. Vyrážka může zůstat ale i bez ošetření, nicméně dítě si ji nesmí škrábat.
  • Důležité je při onemocnění mírnit případnou horečku a dodržovat dostatečný příjem tekutin, aby se předešlo dehydrataci zejména malého pacienta.
  • Virus i po vyléčení příznaků zůstává v organismu a v případě oslabení imunity nebo ve vyšším věku se může projevit ve formě pásového oparu.
  • Naopak s opičími neštovicemi společného nic nemá, u nich je původce jiný. Proto ani očkování proti neštovicím planým nepředchází neštovicím opičím a naopak.

Odborná spolupráce:

MUDr. Pavel Dlouhý

Předseda Společnosti infekčního lékařství České lékařské společnosti J. E. Purkyně a primář Infekčního oddělení Masarykovy nemocnice v Ústí nad Labem.


Prof. MUDr. Roman Chlíbek, Ph.D.

Předseda České vakcinologické společnosti, děkan Fakulty vojenského zdravotnictví Univerzity obrany v Hradci Králové a zároveň vedoucí tamější Katedry epidemiologie.

Autor článku

Redaktorka Vitalia.cz. Vystudovala žurnalistiku a češtinu na Univerzitě Palackého v Olomouci, pracovala v Deníku, na webu TV Nova a iDNES.cz. Píše o zdravotnictví. Je držitelkou novinářských cen Psychiatrické společností ČLS JEP za rok 2021 a 2022. 

'; 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 »