Zánět průdušek patří k nejčastějším onemocněním dýchací soustavy. Jak ho poznáte?

29. 7. 2023 9:00
3 nové názory
ručitel
MUDr. Daniel Petr | Odborný garant článku
„Akutní bronchitida je jedno z běžných infekčních onemocnění. Ohrožuje především malé děti a seniory.“

Zánět průdušek neboli bronchitida často doprovází běžné nachlazení. Jedná se o zánět výstelky dýchacích cest v plicích, který může mít buď akutní nebo chronickou formu. V obou případech se onemocnění projevuje nepříjemným kašlem, každý z těchto dvou typů má však odlišné příčiny a způsob léčby. 

Co je bronchitida?

Zánět průdušek, který lékaři odborně nazývají bronchitida, je respirační onemocnění, jež se řadí mezi záněty dolních dýchacích cest. Tento zdravotní problém představuje jeden z nejčastějších patologických jevů, které postihují dýchací soustavu. U pacientů nejprve dochází ke vzniku zánětlivého edému a později se tvoří také exsudát (hlen), což vyvolává silný kašel.

Za rozvoj bronchitidy mohou být v první řadě zodpovědné různé mikroorganismy, jako jsou například respirační viry, bakterie, chlamydie, plísně a kvasinky. Obtíže ale může zapříčinit také inhalace dráždivých par a plynů a svou roli vždy hrají i další faktory, jako je prochlazení, suchý okolní vzduch nebo zdravotní stav pacienta. Bronchitida se pak vyskytuje ve formě akutní i chronické. [1, 2, 34]

Akutní bronchitida

Akutní zánět průdušek se rozvíjí náhle, obvykle po předchozím nachlazení. Toto onemocnění vyvolává virová nebo bakteriální infekce, která má za následek hromadění hlenů a způsobuje neustálý kašel. Inkubační doba akutního zánětu průdušek je zhruba 1‒3 dny.

Příznaky akutní bronchitidy:

Největší problém představuje akutní bronchitida u dětí a starších lidí. Ohrožení jsou ale také lidé, kteří trpí srdeční chorobou, onemocněním plic nebo astmatem. Léčba obvykle trvá 7‒10 dnů, může to být však i několik týdnů. V ojedinělých případech může akutní zánět průdušek přejít až v chronickou formu. [5, 6, 7, 8]

Chronická bronchitida

Jak poznat zánět průdušek, pokud se nejedná o jeho akutní formu? Chronický zánět průdušek vzniká dlouhodobým drážděním dýchacích cest nebo opakovanými infekty. Tito činitelé mají na svědomí chronický zánětlivý proces sliznice dýchacích cest. Ta je podrážděná a náchylnější k infekci.

Většinou je na vině kouření cigaret, prach nebo znečištěné ovzduší. V krajním případě může tato forma vyvolat zápal plic a trvale poškodit plíce i průdušky. Muži jsou přitom chronickou bronchitidou postiženi dvakrát častěji než ženy a mezi další rizikové faktory patří také individuální predispozice, jako jsou poruchy imunity nebo atopie.

A jaké má zánět průdušek příznaky, pokud se u pacienta rozvine ve své chronické podobě? Hlavním symptomem chronické bronchitidy je produktivní kašel, který trvá déle než 3 měsíce ve dvou po sobě jdoucích letech. Dále má bronchitida příznaky, jako je například tzv. bolest průdušek (bolest při kašli) či hlen na průduškách.

Další příznaky chronické bronchitidy:

  • dlouhotrvající kašel a bolest na hrudi,
  • vykašlávání žlutého hlenu,
  • vykašlávání zeleného hlenu,
  • nechutenství,
  • dušnost,
  • velká únava.

Chronická bronchitida často bývá považována za běžný kuřácký kašel. Může však způsobit i vážné komplikace v podobě CHOPN, což je chronická obstrukční plicní nemoc. Ta zhoršuje průtok vzduchu plícemi (bronchiální obstrukce), objevuje se hlavně dušnost a hubnutí, později také v důsledku selhávání pravé srdeční komory otoky nohou a cyanóza (namodralá kůže a sliznice) či zvětšení jater. [9, 10, 11, 12]

Prodělali jste někdy zánět průdušek?

Diagnostika

Aby lékař věděl, jak léčit průdušky, je nejprve nutné zjistit, zda se skutečně jedná o bronchitidu a s jakým typem onemocnění se pacient potýká. Z toho důvodu by měl provést fyzikální vyšetření, které spočívá v poslechu plic, kde je slyšet chropy velkých, středních a malých bublin, ale také vrzoty. Mezi další prováděné testy se pak řadí laboratorní vyšetření, funkční vyšetření plic nebo rentgen srdce a plic. [13, 14, 15, 16]

Jak léčit zánět průdušek?

Pacienty obvykle zajímá hlavně to, jak rychle vyléčit průdušky, jaká existuje pro bronchitidu léčba a co na průdušky nejvíce pomáhá. Terapie vždy záleží na konkrétním typu onemocnění a také na individuálním zdravotním stavu daného pacienta, ale většinou spočívá v podávání vhodných medikamentů a dodržování lékařem doporučených opatření.

Dlouhotrvající kašel může značit závažný problém. Kdy vyhledat lékaře?
Přečtěte si také:

Dlouhotrvající kašel může značit závažný problém. Kdy vyhledat lékaře?

Léčba akutní bronchitidy spočívá především v dodržování klidového režimu. Na suchý dráždivý kašel pomáhají antitusika, pacientům se ale podávají také léky na potlačení horečky a podporu vykašlávání (expektorancia a mukolytika). Pokud má infekce bakteriální původ, lékaři předepisují antibiotika. U rizikových pacientů, u nichž hrozí bakteriální superinfekce původně virového onemocnění, se lékař může rozhodnout předepsat je také. Jedná se hlavně o pacienty trpící cukrovkou, srdečním onemocněním nebo chronickou obstrukční plicní nemocí.

V případě chronické bronchitidy je nejdůležitější vyhnout se kouření, pobytu v zakouřených místnostech a všem látkám, které průdušky dráždí. Léčba chronického zánětu průdušek spočívá v podávání speciálních bronchodilatačních léků, které rozšiřují dýchací cesty a usnadňují dýchání. U pacientů trpících dechovou nedostatečností se podává také kyslík. [17, 18, 19, 20, 21, 22]

Zánět průdušek a domácí léčba

Pokud dáváte přednost přírodním metodám, jistě vás zajímá, jaká existuje pro zánět průdušek domácí léčba. Pacienti by měli dbát hlavně na dodržování pravidelného pitného režimu. Na nějaký čas je nutné vyhnout se používání různých sprejů a deodorantů a z jídelníčku vyřadit mléčné výrobky, rafinované cukry, pečivo z bílé mouky nebo třeba nadýmavé druhy zeleniny. Naopak můžete vyzkoušet některé osvědčené babské rady.

Co na zánět průdušek pomáhá?

  • bylinkové čaje a směsi,
  • inhalace výluhu z heřmánku,
  • cibulová šťáva s medem,
  • sirup z medu a jablečného octa. [23, 24, 25, 26]

Zánět průdušek u dětí a kojenců

U malých pacientů se většinou projeví zánět průdušek v akutní formě. Ke vzniku bronchitidy jsou navíc náchylnější děti, které trápí také další onemocnění dýchacích cest, jako je například astma, senná rýma nebo některé druhy alergií.

Dále jsou ohrožené:

  • předčasně narozené děti,
  • děti, které nikdy nebyly kojené,
  • děti často vystavené tabákovému kouři,
  • děti, jejichž sourozenci navštěvují školu nebo školku.

Příznaky bronchitidy u dětí jsou podobné jako u dospělých. Malí pacienti velice obtížně dýchají, trápí je suchý kašel a bolest na hrudi a jejich průdušky se plní hlenem. Může se objevit horečka, častý je však i zánět průdušek bez teplotKromě toho je typické i hvízdání při výdechu a děti bývají celkově velmi unavené.

Jaká je tedy léčba bronchitidy a co pomáhá na zánět průdušek v případě malých pacientů? Kromě předepsaných léků můžete vyzkoušet do dětského pokoje umístit zvlhčovač vzduchu. Dále pomáhá klidový režim, dostatečný přísun tekutin a med na zmírnění kašle.

Pokud jde o zánět průdušek u kojenců a batolat, často se vyskytuje obstruktivní bronchitida. Tu vyvolávají zánětlivé změny v oblasti dolních cest dýchacích. Děti může trápit dráždivý kašel, únava, horečky i dušnost. Jelikož je v průduškách usazený hlen, který působí překážku proudícímu vzduchu, typické je také hvízdání při výdechu. Někdy je tuto nemoc těžké rozlišit od astmatu. [27, 28, 29, 30]

Bronchitida v těhotenství

Pokud se jedná o běžný zánět průdušek s mírným průběhem, nastávající maminky se nemusí ničeho obávat, protože pro plod není nebezpečný. Těhotné ženy by se však o vhodné léčbě měly důkladně poradit se svým praktickým lékařem, protože ne všechny obvykle předepisované přípravky jsou pro ně vhodné.

Opakované a silné záchvaty dráždivého kašle však mohou ve vyšších stádiích těhotenství způsobit nastávající mamince i jejímu dítěti velké problémy a v nejhorším případě také mohou vyvolat předčasný porod. Zánět průdušek v těhotenství proto vyžaduje speciálně upravenou léčbu. [31, 32, 33, 34]

Zdroje: nzip.cz, wikiskripta.eu, nemoci.vitalion.cz, stefajir.cz, internimedicina.cz, mayoclinic.org, my.clevelandclinic.org, healthline.com, kidshealth.org, verywellhealth.com, ncbi.nlm.nih.gov

Sabina Rakášová (neregistrovaný)
Dobrý den, mám jednou za čas záchvaty kašle trvá i deset až patnáct minut stalo se mi to dnes po druhé ráno kolem 7-8 hodiny až mi chrci na hrudníku
MUDr. Thai Bao Han (neregistrovaný)
Dobrý den, nechte se vyšetřit u praktického lékaře, ten vás případně doporučí na pneumologii. Jste kuřák?
MUDr Lant (neregistrovaný)

Dobrý den, mohl by to být zánět průdušek. Zkuste na toto téma něco pohledat na internetu, třeba se vám podaří nějaké informace objevit.

  • 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 »