Chřipka je těžké onemocnění, které se musí vyležet. Antivirotika se ovšem předepisují jen málokdy

17. 3. 2023 9:00
přidejte názor

Bolest hlavy, únava, horečka a slabost tak velká, že vám téměř nedovolí vstát z postele. S běžnými příznaky chřipky se pravděpodobně alespoň jednou za život potýkal každý z nás. A někteří „šťastlivci“ tímto onemocněním trpí i opakovaně. Není se čemu divit, koneckonců jde o jedno z nejnakažlivějších virových onemocnění vůbec, které každoročně potrápí statisíce Čechů, přičemž zhruba dva tisíce z nich nemoci podlehnou.

Co je chřipka?

Chřipka je silně nakažlivé virové onemocnění. Velice snadno se šíří v kolektivech a nejaktivnější bývá především během podzimu a zimy, kdy způsobuje každoroční epidemie. Ačkoli se úmrtí na chřipku v ČR týká zpravidla pacientů starších 65 let a osob s oslabenou imunitou, průběh chřipky se rozhodně nevyplatí podceňovat ani v případě dětí a dospělých. Je velmi nevyzpytatelná a podlehnout jí mohou všechny věkové skupiny.

Nejčastěji se s chřipkou setkáváme v období zimy, kdy hodně topíme, čímž snižujeme vlhkost vzduchu a vytváříme dokonalé podmínky pro množení virů. K jejich přenosu pak v případě chřipky dochází pomocí kapének, tedy především kašláním, kýcháním a smrkáním. Nebezpečné jsou v tomto ohledu však i kontaminované předměty, kterých se nemocný dotkl. Virus chřipky na nich totiž může ulpět a zůstat až po dobu několika hodin.

Do těla pak chřipkový virus vniká zpravidla nosem nebo rty a následně se zachytí na sliznici krku nebo nosu. Dále se šíří v horních cestách dýchacích a může napadnout i plíce. Podle statistik chřipka nejčastěji postihuje mladé dospělé, obecně však na věku pacienta vůbec nezáleží. Nevyhýbá se totiž ani dětem či seniorům. Nejlépe se viru daří v kolektivech, kam patří například školy. [1, 2, 34]

Typy chřipky

Původcem chřipkového onemocnění jsou ve většině případů dva typy RNA viru, a to typ A a typ B. Celkem ale existují hned čtyři typy chřipkových virů, přičemž každý z nich má lehce odlišné vlastnosti. Všechny spadají do čeledi Orthomyxoviridae. Z lékařského hlediska jsou rozděleny následujícím způsobem:

  • chřipka typu A – vyvolává velké chřipkové epidemie a pandemie (španělská chřipka, ptačí chřipka, prasečí chřipka), má nejtěžší průběh, kromě lidí může způsobit problémy i jiným savcům a ptákům,
  • chřipka typu B – postihuje prakticky jen lidi, stojí za epidemiemi menšího rozsahu, průběh nemoci není tak závažný jako u chřipky A,
  • chřipka typu C – způsobuje jen lehké záněty dýchacích cest, klinické příznaky se většinou objevují jen u dětí, dospělé téměř nepostihuje,
  • chřipka typu D – postihuje primárně skot, nákaza člověka tímto typem viru zatím nebyla zjištěna. [5, 67]

Příznaky chřipky

Ačkoliv je chřipka laickou veřejností často zaměňována za nachlazení, provází ji několik charakteristických příznaků, podle kterých se dá vcelku spolehlivě odlišit. Asi nejtypičtějším symptomem je vysoká horečka (nad 38 °C), která se objevuje zcela náhle. Spolu s horečkou se objevují:

Později se může dostavit i rýma a ucpaný nos. Kašel bývá spíše suchý a dráždivý, vlhký kašel s vykašláváním hlenu není u chřipky běžný. U dětských pacientů a seniorů se ale k výše zmiňovaným příznakům často přidávají i zažívací potíže, jako jsou nevolnost, bolesti břicha, zvracení a průjem.

Stav imunitního systému a celková kondice hodně ovlivňují, jaký má chřipka průběh. Těžším průběhem jsou ohroženi:

  • malé děti,
  • lidé starší 65 let,
  • imunokompromitovaní pacienti (AIDS, rakovina, autoimunitní onemocnění),
  • pacienti s chronickým onemocněním (cukrovkáři, kardiaci a podobně),
  • těhotné ženy,
  • obézní lidé. [8, 9, 10]

Jak dlouho trvá chřipka?

Chřipka je těžké onemocnění, které člověka vyřadí z běžného provozu i na několik týdnů. Pokud nemá pacient komplikovaný průběh, může u něj chřipka trvat třeba jen 7–14 dní. K tomu je ale nutné ještě připočítat rekonvalescenci, což je doba, kdy by se měl člověk ještě šetřit a vyhýbat se zvýšené zátěži. To mohou být klidně až 3 další týdny.

Inkubační doba chřipky a infekčnost

Inkubační doba je u chřipky poměrně krátká. Většinou trvá 1–4 dny, než člověk z plného zdraví náhle ulehne s horečkou. Pro své okolí je nejvíce nakažlivý po dobu přibližně prvních 5 dnů. Tato doba je ale dost individuální a například malé děti a osoby s narušenou imunitou mohou chřipku roznášet výrazně déle. [11, 12, 13]

Chřipka: léčba

U většiny pacientů se léčba chřipky zakládá na mírnění klinických příznaků. Zásadní je dodržovat klid na lůžku, přijímat dostatek tekutin a dopřávat si více vitamínů. Ke zmírnění silných bolestí kloubů a svalů se užívají analgetika, jako jsou paracetamol nebo ibuprofen. Další možností jsou přípravky s kyselinou acetylsalicylovou, které se ovšem nesmí podávat dětem mladším 12 let.

Nejde o bakteriální onemocnění, proto lékaři nepředepisují na chřipku antibiotika. Výjimkou jsou případy, kdy se jako komplikace přidruží bakteriální infekce. U pacientů s rizikem těžkého průběhu je sice možné nasadit antivirotika, nicméně tyto léky mají jeden zásadní problém. Aby měly požadovaný efekt, musí se nasadit co nejdříve po propuknutí příznaků, což znamená nejdéle do 48 hodin. Jinak mohou být zcela neúčinné. [14, 15, 16]

Prevence chřipky

S ohledem na to, jak moc je chřipka rozšířené a nakažlivé onemocnění, se nelze infekci vždy spolehlivě vyhnout. Existují ale určitá opatření, která mohou snížit riziko nákazy a zmírnit závažnost průběhu onemocnění. Doporučuje se:

  • vyhýbat se během chřipkové epidemie místům s vysokou koncentrací osob (MHD a nákupní centra),
  • důsledně dodržovat základní hygienická opatření, jako je mytí rukou po příchodu domů,
  • dodržovat správnou životosprávu (dostatek spánku, hodně čerstvého ovoce a zeleniny, pravidelný pohyb a otužování),
  • pravidelně větrat místnosti,
  • posilovat imunitní systém (pomáhá zvýšený příjemvitamínu C, echinacea a zinek).
Přecházet angínu se nevyplácí. Bez léčby se vrací i několikrát do roka
Přečtěte si také:

Přecházet angínu se nevyplácí. Bez léčby se vrací i několikrát do roka

Očkování proti chřipce

Za nejlepší prevenci je v současné době považováno očkování, které je vhodné zejména pro rizikové skupiny. Očkování by se mělo podstoupit ještě před začátkem chřipkové sezóny, což znamená v období od října do prosince. Ochrana navozená vakcinací začíná působit až dva týdny po aplikaci. Jelikož se jedná o nepovinné očkování, pro řadu pojištěnců není hrazeno ze zdravotního pojištění.

Plně hrazené je pro osoby starší 65 let. Dále existují jiné rizikové skupiny pojištěnců, kterým je hrazena vakcína do výše nejméně ekonomicky náročné varianty:

  • zdravotničtí pracovníci,
  • osoby dlouhodobě pobývající ve zdravotnických a sociálních zařízeních,
  • pacienti trpící diabetem, vážným chronickým onemocněním srdce a cév, dýchacího traktu, ledvin a jater,
  • pacienti po odstranění sleziny či po transplantaci kostní dřeně,
  • pacienti s vrozenou či získanou poruchou imunitního systému. [17, 18, 19]

Chřipka u dětí

Příznaky chřipky u dětí se mohou mírně lišit od potíží, které trápí dospělé. K virové nákaze se může snadno přidružit i bakteriální infekce v podobě zánětu středního ucha. Malí pacienti také častěji pociťují bolesti břicha a trpí nevolnostmi, průjmem a zvracením. Zažívací potíže během chřipky jsou běžné zejména u kojenců.

Ačkoliv se většina předškoláků z chřipky dostane za týden, je pořád nutné mít na mysli to, že děti patří mezi ohrožené skupiny. Zejména u miminek je nutné hlídat příjem tekutin, aby nedošlo k dehydrataci. Pediatra byste měli kontaktovat, pokud:

  • chřipkou onemocní kojenec mladší 3 měsíců,
  • horečka trvá déle než 3 dny,
  • kašel přetrvává déle než týden. [20, 21, 22]

Zdroje: cdc.gov, nih.gov, betterhealth.vic.gov.au, health.harvard.edu, hopkinsmedicine.org, webmd.com, who.int, healthychildren.org, pharmanews.cz, bezpecnostpotravin.cz, nzip.cz, vzp.cz, pediatriepropraxi.cz, vaccination-info.europa.eu, ockovacicentrum.cz

Chřipka – rozcestník

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