Svalová horečka může člověka na několik dní vyřadit z běžného fungování. Co ji způsobuje?

13. 9. 2021 7:30
přidejte názor
Autor: Shutterstock

Dali jste si během tréninku pořádně do těla, protože se snažíte dostat do skvělé formy? Nebo jste se snad rozhodli začít s běháním, ale místo toho, abyste to vzali zvolna, jste se do toho pustili s pořádnou vervou? Pokud se druhý den vlivem nesnesitelné bolesti svalů nemůžete ani hnout, na vině je s největší pravděpodobností svalová horečka. Prozradíme, jak ji co nejrychleji překonat.

Co je svalová horečka?

Co se dozvíte v článku
  1. Co je svalová horečka?
  2. Příčiny svalové horečky
  3. Jaké má svalová horečka příznaky?
  4. Léčba svalové horečky
  5. Kdy vyhledat lékaře?
  6. Možnosti prevence

Jedná se o nepříjemnou bolest svalů (tzv. svalovice), která se objevuje den nebo maximálně dva dny po sportovním výkonu či větší fyzické zátěži. Namožené svaly přitom mohou stejnou měrou potrápit nepříliš aktivní jedince, kteří se rozhodli začít pravidelně cvičit nebo zkrátka přecenili své možnosti, ale i ostřílené sportovce, pro které není každodenní trénink ničím speciálním.

Příčiny svalové horečky

V minulosti lékaři předpokládali, že za rozvojem nepříjemné bolesti stojí nahromadění kyseliny mléčné ve svalech, která je vylučována při jakémkoliv intenzivnějším pohybu. Dnes je však jasné, že se na vzniku obtíží podílí také drobné poranění svalových vláken. Během nepřiměřené či nezvyklé námahy totiž ve svalové tkáni vznikají mikroskopické trhlinky.

Nejčastější příčinou svalové horečky je přetížení svalů (tedy velká svalová zátěž) při namáhavé tělesné aktivitě, jako je například sport nebo náročnější fyzická práce. Mikroskopické trhlinky přitom vznikají hlavně ve chvíli, kdy se svaly intenzivně stahují, což obvykle probíhá za vysoké tepové frekvence.

Riziková je proto celá řada sportovních aktivit včetně běhání, posilování, intervalového cvičení nebo cyklistiky. Kromě toho se příležitostně objevuje svalová horečka po sexu, který může být v některých případech namáhavější než sportovní výkon. Problematické je ale i nošení těžších břemen nebo jiná fyzicky náročná aktivita, která zatěžuje jiné skupiny svalů než ty, které člověk namáhá pravidelně.

Není tedy žádnou výjimkou, že se svalová horečka objevuje u netrénovaných lidí, kteří chtějí začít sportovat, ale nejsou zvyklí opakovaně vykonávat konkrétní fyzickou aktivitu. Místo toho, aby svalovou zátěž postupně zvyšovali, to pak mohou hned zkraje přehnat a svalovice na sebe nenechá dlouho čekat.

Svalová horečka ale může dostihnout i zkušené sportovce. Důvodem bývá třeba vykonávání pohybu, na který člověk není zvyklý, čímž dochází k zapojení jiných svalů než obvykle. Může se také jednat o signál, že to pacient s tréninkem ve fitku tentokrát přehnal a dal si do těla víc, než bylo nutné. Dále pak svalovice často postihuje i sportovce, kteří se po přestávce či zranění chtějí vrátit zpět do formy.

Další rizikové faktory:

  • nesprávné držení těla,
  • špatné pohybové návyky,
  • sedavý způsob života,
  • nadměrný stres,
  • nedostatek spánku,
  • nevyvážený jídelníček.

Jaké má svalová horečka příznaky?

Mírná bolest, kterou lidé po větší námaze pociťují, je samozřejmě zcela normální a neměla by nikoho znepokojovat. Jedná se totiž o přiměřenou reakci na zátěž, které člověk své tělo vystavuje. Pokud to ovšem se cvičením nebo jinými pohybovými aktivitami přeženete, může se bolest v některých případech stát až nesnesitelnou a dokonce si můžete ublížit.

Prostřednictvím svalové horečky dává tělo člověku najevo, že další zátěž již není schopné tolerovat. Svaly jsou celkově ztuhlé a pacient každý svůj pohyb vnímá jako velice bolestivý. Z toho důvodu pak nemůže normálně chodit nebo třeba zvedat paže, bolí ho vstávání z postele a velký problém může činit i sestup ze schodů.

Kromě bolesti svalů patří mezi typické příznaky také celková únava organismu, nepříjemné křeče nebo otoky. U některých lidí může způsobit svalová horečka zimnice a jindy se naopak objevuje zvýšená teplota. Bolest svalů navíc představuje jakési varovné znamení, které by mělo člověku zabránit v jejich dalším zatěžování. Pokud se ji budete snažit překonat, můžete se vážně poranit.

Stav, kdy člověk nemůže dělat nic jiného, než odpočívat a polehávat, trvá u každého různě dlouhou dobu. U sportovců, kteří jsou na fyzickou zátěž zvyklí, se zpravidla jedná o jeden až dva dny. Netrénované jedince však může svalová horečka trápit klidně i celý týden. Někdy se přitom největší bolest dostaví hned další den, ale jindy pacienta ztuhlost a únava dožene teprve dva dny po zátěži.

Léčba svalové horečky

Nejdůležitějším lékem, který na svalovou horečku zaručeně funguje, je samozřejmě dostatečný odpočinek. A nemělo by se zde jednat pouze o vynechání dalšího cvičení nebo jiných namáhavých aktivit, ale také o kvalitní spánek alespoň po dobu osmi hodin každý den. Není ovšem dobré zvolit úplnou fyzickou nečinnost a snažit se několik dní vůbec nehýbat.

Ačkoliv je bolest často velice nepříjemná, problémy s namoženými svaly by se měly postupem času vyřešit samy a nejpozději během týdne zcela vymizet. Rozhodně se nepokoušejte bolest rozběhat nebo překonat jinou namáhavou aktivitou, což by mohlo problémy ještě zhoršit. Dočasně pak samozřejmě mohou pomoci léky proti bolesti, ale na ty se raději nespoléhejte.

Regeneraci svalů ovšem můžete podpořit prostřednictvím jednoduchých metod, jako je například sprchování teplou vodou, které by mělo organismu přinést alespoň dočasnou úlevu. Pokud se ale objeví otok, vyzkoušejte spíše studené obklady, protože teplo by mohlo zánět zhoršit. Kromě toho může pomoci i lehká masáž pomocí bylinných mastí a olejů nebo bylinný obklad.

Bylinky na bolavé svaly:

Dalším způsobem, jak si ulevit od potíží, jsou různé koupele (například pobyt ve vířivce, perličková koupel nebo teplá koupel obohacená o regenerační sůl). Poté je dobré osprchovat se vlažnou nebo chladnou vodou, což sníží riziko rozvoje případných otoků a znecitliví nervová zakončení. V některých případech ovšem pomůže také návštěva sauny, páry nebo bazénu.

Po pořádném výkonu by mělo následovat vhodné jídlo, protože tělo potřebuje doplnit živiny. Kromě toho je při svalové horečce důležitý také dostatečný přísun hořčíku a rozhodně byste neměli zanedbávat ani pitný režim. Jakmile odezní největší bolest, zkuste se trochu rozhýbat, protáhnout a vyrazit třeba na procházku.

Kdy vyhledat lékaře?

Pokud jste to s fyzickou námahou přehnali, silné bolesti přetrvávají déle než týden, výrazně vás omezují v pohybu a nijak se nezmenšují (nebo dokonce naopak nabývají na síle), raději se o svém problému zkuste poradit s ošetřujícím lékařem. Existuje totiž možnost, že se vůbec nejedná o svalovou horečku. Na vině může být třeba poškození svalu nebo kloubu, které odpočinek nevyřeší.

Možnosti prevence

Jestliže nechcete, aby se nepříjemná zkušenost se svalovou horečkou v nejbližší době opakovala, zaměřte se na to, jak můžete podobným obtížím do budoucna předejít. V ideálním případě se před jakýmkoliv sportovním výkonem vždy pořádně protáhněte a zahřejte se třeba rychlejší chůzí, pomalejším během nebo prostřednictvím několika minut strávených na rotopedu.

Pokud se cvičením teprve začínáte nebo se k němu vracíte po delší pauze, navyšujte výkon postupně. Nejprve tedy zvedejte lehčí váhy, běhejte pouze na kratší vzdálenosti a v posilovně to rozhodně nepřehánějte. Postupem času pak můžete začít zátěž zvyšovat. Po dlouhém období bez pravidelného pohybu nikdy nechtějte okamžitě trhat rekordy, ale začnete raději zlehka.

Nezapomínejte ovšem ani na další důležité pravidlo, a sice že byste nikdy neměli své tělo namáhat, pokud jste nemocní, cítíte se příliš vyčerpaní, jste ve stresu, trpíte nedostatkem spánku nebo nemáte dostatečně vyváženou stravu a nedodržujete správný pitný režim. O vhodnosti jakéhokoliv cvičení byste se pak měli poradit s lékařem, pokud se řadíte mezi seniory či těhotné ženy, jste obézní, hodně kouříte nebo máte dlouhodobé zdravotní problémy.

Zdroje: rehabilitace.info, benu.cz

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