Akutní epiglotitida ohrožuje malé pacienty na životě. Jaké má příznaky?

22. 1. 2021 7:10
přidejte názor
Autor: Shutterstock

Stěžuje si vaše ratolest na řezavou bolest v krku a nepříjemné polykací obtíže? Pokud se zároveň dostaví i dušnost a horečka, dítě je bledé, hypoxické a pokašlává, na vině by mohla být akutní epiglotitida neboli zánět hrtanové příklopky. Takovou situaci rozhodně nepodceňujte a rychle vyhledejte lékaře, bez včasného zásahu by se totiž pacient mohl udusit.

Co je akutní epiglotitida?

Co se dozvíte v článku
  1. Co je akutní epiglotitida?
  2. Výskyt
  3. Příčiny epiglotitidy
  4. Jaké má epiglotitida příznaky?
  5. První pomoc při epiglotitidě
  6. Diagnostika
  7. Léčba epiglotitidy
  8. Prevence

Jako akutní epiglotitida se označuje život ohrožující onemocnění, které postihuje epiglottis neboli příklopku hrtanovou. Jedná se o chrupavčitou destičku pokrytou sliznicí, jež se nachází za kořenem jazyka a při polykání uzavírá vstup do průdušnice. Tím brání vniknutí potravy a tekutin do horních dýchacích cest.

Při akutní epiglotitidě je hrtanová příklopka vlivem zánětu oteklá a několikanásobně se zvětší. Tím pádem překrývá celý hrtanový vchod nebo jeho značnou část, funguje zde jako mechanická překážka a způsobuje neprůchodnost nebo úplné uzavření průdušnice. Při podráždění může vyvolat také reflexní stahy svalů hrtanu (laryngospasmus) a pacient se začne dusit.

Výskyt

Zánět příklopky hrtanové nejčastěji trápí batolata a předškolní děti ve věku od 3 do 6 let. To vyplývá ze skutečnosti, že dýchací cesty malých pacientů mají částečně odlišné anatomické uspořádání. Hrtanová příklopka je v poměru k velikosti dýchacích cest větší než u dospělých a riziko obstrukce při zánětlivém postižení je tak mnohem vyšší.

Dětský imunitní systém na rozdíl od obranyschopnosti starších pacientů ještě není plně vyvinutý, což se pojí také se sníženou schopností produkovat protilátky typu IgG2 (obrana proti invazivním opouzdřeným bakteriím). Samozřejmě se však může objevit i akutní epiglotitida u dospělých, která ovšem bývá způsobena jiným druhem bakterií.

Příčiny epiglotitidy

Původcem akutní epiglotitidy je nejčastěji bakterie Haemophilus influenzae typu B, proti které dnes již existuje účinné očkování. K nákaze dochází obvykle vzdušnou cestou, přičemž po vdechnutí se bakterie usazují na sliznici dýchacích cest a rychle se množí. Dojde-li k napadení oblasti, kde je hrtanová příklopka, vzniká otok a u pacienta se rozvíjí dýchací obtíže.

Pokud jde o neinfekční příčiny, které způsobují epiglotitidu, vzácně může dojít k mechanickému poranění hrtanové příklopky nebo popálení příliš horkým nápojem. Někdy jsou pak za rozvoj zánětu hrtanové příklopky zodpovědné jiné druhy bakterií, kam patří například:

  • Streptococcus pneumoniae,
  • Streptococcus agalactiae,
  • Streptococcus pyogenes,
  • Staphylococcus aureus,
  • Moraxella catarrhalis.

Jaké má epiglotitida příznaky?

Zdravotní obtíže, které souvisí s rozvojem akutní epiglotitidy, obvykle zastihnou pacienty a jejich rodiče nepřipravené. Začínají totiž náhle z plného zdraví a velmi rychle se zhoršují (v řádu hodin). Nejprve se objevují nespecifické projevy infekce horních dýchacích cest, přičemž prvním příznakem obvykle bývá řezavá bolest v krku spojená s polykacími obtížemi.

Kromě toho se v počátcích nemoci často dostavují vysoké horečky, děti bývají bledé, schvácené a nechtějí pít, přestože mají vlivem zvýšené teploty žízeň. Ústa však mají pootevřená, vytékají z nich sliny a pacienti mohou mít také mírně vyplazený jazyk. Někdy zároveň dochází k promodrávání rtů a okolí úst.

Postupně se objevuje dechová tíseň, a to hlavně v poloze na zádech. Pacienti proto většinou sedí v předklonu, opírají se o ruce, brání se položení a mají otevřená ústa s předsunutou čelistí. Kojenci, kteří leží na zádech, se snaží zaklonit hlavu dozadu, aby se zlepšil průchod vzduchu dýchacími cestami.

Dýchání je pomalé a pro pacienta velice namáhavé. Při nádechu může být slyšet bublavý zvuk, charakteristický je ale i huhňavý, monotónní tichý hlas, kterým dítě mluví. Postižený se brání kašli, který je příliš bolestivý, takže může docházet spíše k mírnému, opatrnému pokašlávání. Celkově však pacient bývá až nápadně klidný a apatický v důsledku nedostatečného přísunu kyslíku (hypoxie).

Příznaky epiglotitidy:

  • bolest v krku,
  • polykací obtíže,
  • horečka,
  • celková schvácenost,
  • dechová tíseň,
  • bublavé nádechy,
  • tichý hlas,
  • slintání,
  • pokašlávání,
  • hypoxie.

Rozvoj onemocnění je rychlý (v řádu několika hodin) a dramatický. Pokud se dítě nadechuje pouze s obtížemi a je přitom slyšet srkavý až bublavý zvuk, je nutné okamžitě kontaktovat rychlou záchrannou službu. Jinak totiž hrozí udušení v důsledku ucpání dýchacích cest.

U některých pacientů se navíc mohou objevit doprovodné komplikace v podobě zápalu plic, lymfadenopatie či septické artritidy. Výjimkou však není ani zánět osrdečníku, zánět mozkových blan nebo infekce podkoží a kloubů.

První pomoc při epiglotitidě

  • Při zpozorování varovných příznaků co nejrychleji kontaktujte RZP.
  • Důležité je zachovat rozvahu a pokusit se dítě uklidnit.
  • Na krk je možné přiložit studený obklad a pomáhá i chladný, vlhký vzduch.
  • Pacienta uložte do sedu či polosedu, nikdy ne do vodorovné polohy na zádech.
  • Pokuste se zajistit všechny základní životní funkce.
  • V případě potřeby zahajte resuscitaci.

Diagnostika

Při klasickém průběhu nemoci se dá diagnóza stanovit již díky klinickému nálezu a příznakům, které pacienta trápí, bez ohledu na důkladné prozkoumání hrtanové příklopky. Jestliže je však pacienta nutné vyšetřit, důležité je vyvarovat se položení dítěte na záda, protože jinak hrozí, že dojde k přiklopení epiglottis na laryngeální vchod, což úplně uzavře dýchací cesty.

Základem správné diagnostiky je pak důkladné laryngoskopické vyšetření, tedy prohlídka epiglottis. Klíčové je přitom umět rychle rozlišit, zda se jedná o akutní epiglotitidu, či laryngitidu. Lékař také může šetrně prozkoumat oblast hltanu tak, že mírně stlačí pacientovi jazyk pomocí špátle, ale pouze v přední třetině jazyka, aby se nedávil.

Pokud se skutečně jedná o zánět hrtanové příklopky, epiglottis bude zvětšená, zarudlá, prosáklá a může mít zvláštní tvar. Někdy ovšem epiglottis není patrná, protože se v jejím okolí stahují sliny a zánětlivý sekret. Kromě laryngoskopie se dále využívá i CT vyšetření, díky kterému lékaři přesně poznají velikost a stav hrtanové příklopky.

Prodělali jste někdy epiglotitidu?

Léčba epiglotitidy

Zánět hrtanové příklopky je závažné onemocnění, které je nutné včas rozpoznat, aby nedošlo k rozvoji komplikací nebo dokonce k úmrtí pacienta. Léčba se proto neobejde bez kvalifikované lékařské péče, přičemž nejdůležitější je kontaktovat záchrannou službu ihned, když zpozorujete varovné příznaky epiglotitidy.

Přenášení i transport pacienta se provádí zásadně v poloze vsedě, nikdy se nesmí pokládat. Pokud dojde ještě před transportem do nemocničního zařízení nebo v jeho průběhu ke kritické obstrukci dýchacích cest, je nutné zahájit urgentní intubaci. Jedná se o zavedení umělé rourky přes ústa či nos přímo do průdušnice, aby se zajistil dostatečný přívod vzduchu.

Další možností je pak tracheostomie, kdy se na přední straně krku udělá přes kůži otvor přímo do průdušnice, do kterého se zavede rourka, kterou je možné dýchat. Podobným výkonem je i koniotomie, otvor se však při tomto zákroku dělá výše než při tracheostomii. Po zvládnutí akutního stavu je pak možné rourku do dvou týdnů vyjmout.

Dítě je po převozu do nemocnice umístěno na oddělení JIP. Před aplikací léčby se provádí odběr krve na mikrobiologické vyšetření. Jakmile je průchodnost dýchacích cest zajištěna a pacient stabilizován, podávají se mu po dobu 7 až 10 dní nitrožilní cestou antibiotika, která pomáhají odstranit zánětlivý otok epiglottis.

Ke zmenšení otoku někdy slouží také kortikoidy a pro snížení horečky jsou vhodná antipyretika. Během léčby zánětu hrtanové příklopky je pak důležitý také monitoring základních fyziologických funkcí (například srdeční frekvence, počet dechů, saturace kyslíku) a podávání dostatečného množství tekutin.

Prevence

Účinným preventivním opatřením proti rozvoji epiglotitidy je očkování, které se u nás od roku 2002 provádí formou hexavakcíny. Ta obsahuje látky, které chrání pacienty před šesti typy nemocí, kam patří záškrt, tetanus, dávivý kašel, virová hepatitida typu B, dětská přenosná obrna a nákazy bakteriemi Haemophilus influenzae typu B. Díky tomuto očkování byl počet případů dříve relativně častého onemocnění snížen na minimum.

Zdroje: wikiskripta.eu, zzsmsk.cz, pediatriepropraxi.cz

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