Španělská chřipka byla nejničivější pandemií v historii lidstva. Kolik za sebou zanechala úmrtí?

5. 4. 2022 7:30
přidejte názor
Autor: Depositphotos

Španělská chřipka byla nejvážnější chřipkovou pandemií, jaká kdy lidskou populaci zasáhla. Vrcholila v letech 1918–1920 a zanechala za sebou desítky milionů obětí. Počet zemřelých vypovídá o tom, že se její smrtnost pohybovala mezi 3–5 %, což je v porovnání s dnešní chřipkou nesrovnatelné. Dostupné prameny uvádí, že paradoxně zabíjela hlavně mladé a na první pohled zdravé lidi.

Co byla španělská chřipka?

Co se dozvíte v článku
  1. Co byla španělská chřipka?
  2. Jak dlouho trvala španělská chřipka?
  3. Španělská chřipka: počet obětí
  4. Španělská chřipka v Čechách
  5. Jaký mívala španělská chřipka průběh?
  6. Španělská chřipka: léčba
  7. Španělská chřipka: roušky a opatření
  8. Proč zrovna španělská?

Španělská chřipka byla nejvážnější chřipková pandemie, jaká byla kdy zaznamenána. Ve dvacátém století zasáhla celý svět a zanechala za sebou desítky milionů obětí. Největšího vrcholu dosáhla španělská chřipka mezi lety 1918 a 1920.

Mezi nejpostiženější země v Evropě patřilo Československo a Rakousko. Pandemie krutě dopadla i na další kontinenty a nevyhnula se jí ani odlehlá místa na světě, jako je například Grónsko. Z oblasti Aljašky, Nového Zélandu nebo Brazílie pak pochází tělní pozůstatky obětí španělské chřipky, ze kterých získali výzkumníci důležité informace o této nemoci.

Původcem španělské chřipky byl chřipkový virus typu A, konkrétně šlo o virus prasečí chřipky sérotypu H1N1. Šlo o podobnou chřipku, jakou známe dnes, jen byla mnohem agresivnější a smrtelnější. Lidé neumírali na samotnou chřipku, nýbrž na vážné následky, které způsobovala (hlavně zápal plic).

Lékaři se navíc domnívali, že se jedná o bakteriální infekci, a projevy španělské chřipky byly mylně připisovány jakési agresivní bakterii. Zejména v zemích českých a rakouských byl v tehdejší době vážný nedostatek lékařů a medicína ještě nebyla zdaleka na takové úrovni jako dnes. Na to, že se jednalo o virové onemocnění, se přišlo až ve 30. letech 20. století. [1, 2, 34]

Jak dlouho trvala španělská chřipka?

Oficiálně se uvádí, že trvala přibližně 2 roky (mezi lety 1918 a 1920). Její vrchol pak trval 9 měsíců, kdy zemřelo nejvíce osob s touto nákazou. Španělská chřipka probíhala charakteristicky ve vlnách, konkrétně se uvádí čtyři vlny:

  • 1. vlna (jaro 1918–léto 1918) – nejmírnější, lidmi byla podceňována, zasáhla hlavně Itálii, Španělsko a Velkou Británii,
  • 2. vlna (podzim 1918) – španělská chřipka udeřila v plné síle, výrazně vyšší počet obětí,
  • 3. vlna (leden 1919–únor 1919) – další silná vlna,
  • 4. vlna (1920) – poslední významná vlna.

Za oficiální konec španělské chřipky bývá považován konec roku 1920, kdy už byla valná většina populace promořena a vybudovala si imunitu vůči této infekci. Kolem roku 1925 se španělská chřipka zařadila mezi běžná sezónní respirační onemocnění. Z následků španělské chřipky se svět ovšem vzpamatovával ještě desítky let. [5, 6, 7]

Španělská chřipka: počet obětí

Kolik za sebou zanechala španělská chřipka úmrtí? Počet obětí španělské chřipky není přesně definován. V rozličných pramenech se uvádí, že se počet obětí pohybuje mezi 30–100 miliony, což je velmi široké rozmezí. Mortalita se tedy pohybovala mezi 3–5 %. Pro srovnání, u dnešní chřipky se uvádí smrtnost 0,1 %. Obecně se dá ale říct, že španělská chřipka vzala více životů než první světová válka.

Skladba obětí španělské chřipky byla velice neobvyklá. Většině infekčních chorob totiž podléhají staří lidé a osoby s oslabenou imunitou, u španělské chřipky tomu bylo naopak. Nejvíce obětí bylo ve věkové skupině 20–35 let.

Dnes se většina výzkumníků domnívá, že k tomu docházelo v důsledku tzv. cytokinové bouře. Jedná se o přehnanou imunitní reakci, která častěji nastává u lidí s robustní imunitou. [8, 9, 10]

Španělská chřipka v Čechách

České země patřily k těm, které zasáhla španělská chřipka v Evropě nejzávažněji. Jako první česká oběť španělské chřipky bývá uváděn koncipient pražského policejního ředitelství JUDr. Egon M. Prorok ze Smíchova, který nemoci podlehl ve věku 25 let (září 1918). Co se týče celkového počtu českých obětí, ten bývá odhadován na 44–75 tisíc civilistů a 2–5 tisíc vojáků. [11]

Jaký mívala španělská chřipka průběh?

Španělská chřipka se šířila vysokou rychlostí a byla vysoce nakažlivá. Jaký měla španělská chřipka průběh? Obvykle se objevily tyto příznaky:

  • horečka,
  • ztížené dýchání a lapání po dechu,
  • silné pocení,
  • bolesti svalů a kloubů,
  • nechutenství.

U 10–12 % nakažených nastala smrt po 1–6 dnech od začátku propuknutí příznaků. Otázka je, proč zrovna tato chřipka byla natolik agresivní? Odpověď přinesla až moderní medicína 21. století.

Američtí virologové zjistili, že virus španělské chřipky obsahoval tři různé geny, které mu umožnily aktivně se množit v plicích nakaženého člověka. Virus běžné chřipky se totiž množí hlavně na sliznicích krku, nosu a úst. Z toho důvodu vedlo tolik případů španělské chřipky k těžkým zápalům plic. V kombinaci se zmiňovanou cytokinovou bouří končilo mnoho nákaz fatálně. [12, 13, 14]

Španělská chřipka: léčba

V době probíhající španělské chřipky neexistovaly žádné účinné léky, kterými by šla tato nemoc léčit. Lékaři se proto soustředili hlavně na mírnění klinických příznaků a na také na prevenci, která si kladla za cíl zpomalit už tak rychlé šíření španělské chřipky.

Doporučovalo se hlavně odpočívat na lůžku, přikládat zábaly na hrudník a užívat alkohol jako dezinfekci. Z pohledu zamezení dalšího šíření nemoci neměli nemocní chodit do společnosti a podávat si s ostatními lidmi ruce při pozdravu. [15, 16]

Španělská chřipka: roušky a opatření

Obdobně, jako se roušky nosily během pandemie COVID-19, se toto opatření zavádělo i během pandemie španělské chřipky. V některých zemích se nenošení roušek údajně pokutovalo. V Evropě se ovšem příliš nenosily, protože to bylo považováno za kontroverzní. Z dalších opatření se zaváděla izolace nakažených, zvýšená hygiena rukou a zavírání veřejných budov. [17]

Proč zrovna španělská?

Proč se španělská chřipka nazývá zrovna španělská? Na první pohled by se mohlo zdát, že to odkazuje na původ nemoci. Protože došlo k šíření španělské chřipky v období, kdy probíhala první světová válka, panovalo mezi válčícími státy podezření, že je některý z nich zodpovědný za úmyslné šíření choroby.

Španělsko bylo jedinou zemí, ve které v té době nefungovala cenzura, a místní média se snažila otevřeně hovořit o nebezpečnosti španělské chřipky. Mnoho lidí si tak začalo tuto epidemii nevědomky spojovat se Španělskem a nemoc tak získala přívlastek „španělská“. [18, 19]

Zdroje: cdc.gov, ncbi.nlm.nih.gov, onlinelibrary.wiley.com, sciencedirect.com, academic.oup.com, jstor.org, citeseerx.ist.psu.edu, journals.tubitak.gov.tr, future-science.com, dspace.cuni.cz

V kolika vlnách španělská chřipka probíhala?
Španělská chřipka proběhla mezi lety 1918–1920 celkem ve čtyřech vlnách. Nejvážnější byla druhá vlna na podzim 1918, kdy udeřila v plné síle a nemoci podlehlo nejvíce obětí. Na konci roku 1920 už nemoc v imunizované společnosti doznívala.
Existovalo očkování proti španělské chřipce?
V době probíhající pandemie lékaři ani netušili, že je původcem nemoci virus. K rozvoji vakcín proti chřipce došlo až v období druhé světové války. Žádné očkování proti španělské chřipce nebylo tudíž tehdy dostupné.
Jak se léčila španělská chřipka?
Lékaři v léčbě španělské chřipky dost tápali. Obecně se doporučoval klid na lůžku a přikládání léčivých obkladů. Další léčivé metody bychom dnes považovali za dosti kontroverzní. Šlo například o šňupání kyseliny borité, injekce mléka, užívání alkoholu či pojídání červené řepy.
  • Žá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 »