Riziko infarktu je v zimě vyšší. Co dělat, aby vás nepostihl

15. 12. 2021

Sdílet

Autor: Depositphotos
Chladné počasí, vánoční svátky s plnými stoly nebo namáhavé odklízení sněhu. Patří k zimě, zároveň ale zvyšují riziko akutního infarktu myokardu.

Akutní infarkt myokardu vzniká uzávěrou nebo výrazným zúžením tepny a následným nedokrvováním srdečního svalu, který následkem toho začne postupně odumírat.

Co se dozvíte v článku
  1. Zimní období přeje infarktům
  2. Příznaky akutního infarktu myokardu
  3. Prevenci nezvládnete za pět minut
  4. Co udělat na poslední chvíli
  5. S přivoláním záchranky při potížích nečekejte
  6. Infarkt není jen strašákem seniorů
  7. Rizikový faktor jménem covid

Podle dat Ústavu zdravotnických informací a statistiky ČR skončilo jen loni v nemocnicích s infarktem 22 497 lidí a 3100 lidí zemřelo na kardiovaskulární choroby, kam infarkt patří.

Čeští kardiologové by chtěli počty úmrtí na cévní a srdeční choroby do deseti let snížit o pět procent. V úterý proto tři přední odborníci tohoto oboru vystoupili na tiskové konferenci, kde nejen zopakovali příznaky infarktu, ale také apelovali, aby lidé neodkládali telefonát na linku 112 nebo 155. Zima je totiž období, které chorobám srdce včetně infarktu „přeje“. A tento akutní a život ohrožující stav nepotkává jen seniory, ale i mladé lidi kolem 35 či 40 let věku.

Zimní období přeje infarktům

„Z hlediska výskytu infarktů je prosinec a leden nejrizikovějším obdobím,“ potvrzuje Aleš Linhart, předseda České kardiologické společnosti (ČKS).

Zima přináší pokles teplot, vysokou vlhkost vzduchu, zvýšenou fyzickou aktivitu v podobě odklízení napadaného sněhu nebo Vánoce, s nimiž se může pojit stres či sváteční přejídání. Všechny vyjmenované faktory pak podporují spuštění akutních potíží, které mohou během chvíle skončit i smrtí.

Nadbytek příjmu potravy přispívá k obezitě. Svátky na gauči k nedostatku běžného pohybu. Naopak zvýšená fyzická aktivita při odklízení sněhu může vést u toho, kdo není zvyklý své tělo zatěžovat, například k prasknutí aterosklerotického plátu v zanesené tepně. Na něj pak nasedne krevní sraženina a za desítky minut, někdy za několik hodin dojde k celkovému ucpání tepny.

Nejrizikovějším faktorem v zimě je ale počasí. Mráz zužuje tepny, zvyšuje krevní tlak i riziko ucpání cév nebo způsobuje poruchy srdečního rytmu.

Teplotní propad o přibližně deset stupňů Celsia podle lékařů zvedá počet srdečních příhod asi o sedm procent. „Infarkt myokardu je na zimu zvláště náchylný a vyskytuje se výrazně více právě při poklesu teplot. A čím delší ten pokles je, tím se zdá situace horší,“ doplnil Aleš Linhart. Podle něj by toto měli mít lidé na paměti a neměli váhat s přivoláním nemoci, pokud je nebo jejich blízké zastihnou příznaky nemoci.

Příznaky akutního infarktu myokardu

  • Náhlá a intenzivní bolest na hrudníku, kterou nelze lokalizovat (bolest je v hloubce, není možné na místo, kde vzniká, jednoznačně ukázat prstem)
  • Dušnost – u starších pacientů se vyskytuje častěji než bolest hrudníku
  • Pocit na zvracení či pocit mdlob
  • Náhlé snížení fyzické aktivity u starších pacientů
  • Velká únava
  • Kolaps, i když trvá jen chvíli

Prevenci nezvládnete za pět minut

Co tedy dělat, aby nás v zimě akutní infarkt nepostihl? Ideální je nečekat s prevencí až na chladné měsíce. Podle kardiologů si většina pacientů na infarkt zadělává celá léta svým životním stylem a zima jejich problémy jen umocní.

„Pokud chce člověk snížit riziko toho, aby na Vánoce skončil v nemocnici, měl by se změnou životního stylu začít nejpozději v létě,“ upozorňuje kardiolog Miloš Táborský, přednosta I. interní kliniky – kardiologické FN Olomouc.

A co změna obnáší? Nic, o čem by lidé už za svůj život neslyšeli – přestat kouřit, nepít ve větší míře alkohol, hýbat se a jíst rozumně. Tedy například vyvarovat se velké míry červeného masa, potravin s vysokým glykemickým profilem nebo omezit příjem cukru. Ale také chodit na preventivní prohlídky, aby člověk včas věděl, zda je jeho zdravotní stav rizikový. Zvýšený krevní tlak, cholesterol nebo cukrovka totiž nebolí a bez vyšetření o nich pacient i léta nemusí vědět. Přitom k infarktu přispívají.

Co udělat na poslední chvíli

Lidé nemocní se srdcem, cévami, osoby se zvýšeným rizikem nebo ti, kteří trpí nedokrvením srdečního svalu, tedy ischemickou chorobou srdeční, by se neměli příliš rychle vystavovat chladu.

I o Vánocích, kdy řada lidí zvolní a poleví v disciplíně, by měli důsledně brát léky na chronické nemoci. A neměli by zapomínat na pravidelné zdravotní kontroly.

Pokud napadne sníh a nejsou zvyklí na fyzickou zátěž, měli by bílou nadílku odklízet pomalu a po částech.

A v neposlední řadě, pokud se jim udělá nevolno, měli by si oni či jejich blízcí ihned zavolat sanitku.

S přivoláním záchranky při potížích nečekejte

Rychlost pomoci při infarktu je klíčová, protože při záchraně člověka s akutním infarktem se počítá každá minuta – zpoždění znamená větší poškození srdečního svalu. Pokud se pomoci pacientům nedostane v desítkách minut, až ve 30 procentech případů zemřou. „Většina lidí s infarktem zemře jen proto, že si nezavolají záchranku,“ říká v rozhovoru Miloš Táborský.

V Česku je 22 katetrizačních center, která fungují 24 hodin denně. Jakmile záchranáři vyhodnotí, že se jedná o infarkt, jedou s pacientem přímo do jednoho z nich. Lékaři pak dokáží zprůchodnit tepnu do 23 minut.

„Pokud pacient dojede do nemocnice s katetrizační jednotkou do hodiny, má 96% šanci, že přežije ve velmi dobrém stavu s jen malou jizvou na srdci,“ podotýká lékař Petr Kala, prezident České asociace intervenční kardiologie ČKS.

Přitom lékaři vidí běžně pacienty, kteří dorazí i tři hodiny po akutních potížích či mnohem později. V takových případech mají pacienti na srdečním svalu jizvy, a i proto se u nich velmi zvyšuje riziko některých doživotních následků, jakými jsou porucha srdečního rytmu, srdeční selhání nebo náhlá srdeční smrt.

„Už za 40 minut začne na srdečním svalu postiženém infarktem vznikat nekróza. A ta znamená, že v tom místě už nebude nikdy plně funkční svalovina, protože nekróza se vždy hojí jizvou. Jizva pak přináší různá rizika,“ dodává Petr Kala.

Infarkt není jen strašákem seniorů

Nejčastěji v nemocnici s infarktem končí lidé nad šedesát let. Jde často o kuřáky s vysokým krevním tlakem, cholesterolem, obezitou a chronickými nemocemi.

Infarkt ale není záležitostí jen seniorů. Podle lékařů může postihnout i lidi nad 35 let věku. Proto by ani oni neměli podceňovat příznaky této nemoci a v případě jejich výskytu by ihned měli volat sanitku. A to i v případě nejistoty, zda jde o infarkt, nebo jiný stav. „Je lepší přijít stokrát zbytečně než jednou pozdě,“ podotýká Aleš Linhart s tím, že nikdo se na pacienty nebude zlobit, že si zavolali záchranku, pokud se infarkt neprokáže.

Rizikový faktor jménem covid

Apel byl o to silnější, protože se Česko opět potýká s přílivem covid pozitivních pacientů. Přitom covid loni znamenal, že se pomoc dostala k méně lidem zasaženým akutním infarktem.

I přes akutní potíže se lidé báli jít k lékaři nebo si zavolat záchranku. Buď proto, že příznaky zaměnili s covidem, nebo se báli nákazy ve zdravotnickém zařízení. Jenže obojí je podle kardiologů špatně. A vedlo k tomu, že se zvýšil počet pacientů, kteří se na ně zpětně obrací s „přechozeným“ rozsáhlým infarktem. Nebo zemřeli.

„Obvykle k nám přichází dvacet lidí s infarktem týdně, nyní je to pět až šest,“ popisuje Miloš Táborský. Na kardiologické klinice FN Olomouc každá covidová vlna sníží počet pacientů zhruba o pětinu. A jak potvrdil Petr Kala, podobné zkušenosti má také Interní kardiologická klinika FN Brno.

Na vině nejsou ale jen pacienti. Značná část kardiologických lůžek byla a nyní opět je vyhrazena lidem, kteří potřebují pomoc kvůli covidu, protože nemohou bez podpory dýchat sami. Nemocnice proto odkládají plánované operace, a to i na kardiologii.

Navíc vládní opatření uzavřela bazény a sportoviště, takže lékaři potvrzují, že pacienti se méně hýbali. „Uzavřená sportoviště jsou komplikací a režim mohl být takový, aby k uzávěrám docházelo v menší míře. Některá opatření navíc byla přehnaná a asi není sporu o tom, že se sportoviště mohla otevřít dříve,“ myslí si Miloš Táborský.

Předseda českých kardiologů Aleš Linhart se pak domnívá, že v následujících měsících a letech lze čekat prudký vzestup lidí se srdečním selháním, mimo jiné proto, že infarkt přechodili. Nyní jich je přes 280 tisíc, do roku 2030 by se jejich počet mohl dostat na 450 tisíc.

Autor článku

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

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