Jak správně provádět cviky na záda, abyste si ulevili od bolesti? Důležitou roli hraje pravidelnost a technika

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

Bolest zad je jedním z nejčastějších důvodů pro vystavení pracovní neschopnosti. Obvykle jde o důsledek sedavého životního stylu, kdy člověk trpí nedostatkem pohybu a zároveň dochází k nepřiměřenému zatěžování páteře. Skvělou prevencí mohou být speciální cviky na záda. Pokud člověk netrpí akutní bolestí, rehabilitační cviky na záda pomohou svalstvo protáhnout a uvolnit.

Proč nás bolí záda?

Co se dozvíte v článku
  1. Proč nás bolí záda?
  2. Cviky na záda jako prevence bolestí zad
  3. Jaké jsou nejlepší cviky na záda?
  4. Jak často dělat cviky na záda?
  5. Jak předcházet bolestem zad?

Bolesti zad se v dnešní době řadí mezi tzv. civilizační choroby a trápí velkou část obyvatel vyspělých států. Nejčastěji jde o lidi, kteří mají sedavé zaměstnání a ani ve volném čase se nevěnují žádné pohybové aktivitě nebo pravidelnému cvičení. Dlouhé sezení v ne zrovna optimálních polohách tak zákonitě vede ke zdravotním problémům. Mezi další příčiny bolestí zad patří:

  • extrémně náročné cvičení,
  • dlouhodobé stání (trpí tím číšníci, prodavači, kadeřnice i další profese),
  • dlouhodobý stres,
  • nadváha,
  • časté nošení vysokých podpatků,
  • spaní na nevhodné matraci či polštáři,
  • onemocnění zad.

Bolesti zad vyžadují komplexní přístup. Kromě změny životního stylu (více pohybu, kvalitní židle, sezení na gymnastickém míči, procházky) se ukazuje jako neúčinnější lék na bolesti zad právě cvičení. [1, 23]

Cviky na záda jako prevence bolestí zad

Ohromná výhoda cvičení spočívá v tom, že funguje i jako prevence proti bolestem zad. To znamená, že pokud člověk provádí cviky na záda pravidelně, může se budoucím problémům a bolestem zcela vyhnout. Další výhodou je, že lze provádět cviky na záda doma. Stačí si jen opatřit cvičební podložku a ukrojit si ze dne trochu času.

Trénink zádových svalů je klíčový pro jejich posílení. K rozvoji bolestí zad totiž dochází hlavně z toho důvodu, že jsou svaly ochablé a oslabené. Domácí cviky na záda tudíž nemají jen estetický význam, ale jsou primárně určeny k tomu, aby posílily a protáhly zádové svaly.

Cviky na záda mohou ulevit i v případě, že člověk bolestmi už trpí. Existují totiž speciální rehabilitační cviky, při kterých dochází k protažení těch správných svalů.

Pokud člověk ovšem trpí chronickými nebo naopak akutními bolestmi zad extrémního rázu, měl by se o vhodnosti cvičení poradit s lékařem nebo případně navštívit fyzioterapeuta, který mu poradí, jaké cviky na záda provádět. Navíc pomůže i se správnou technikou a doporučí další možnosti terapie. [4, 56]

Ortoped léčí vbočený palec, artrózu i bolesti zad. Kdy vyhledat lékařskou pomoc?
Přečtěte si také:

Ortoped léčí vbočený palec, artrózu i bolesti zad. Kdy vyhledat lékařskou pomoc?

Jaké jsou nejlepší cviky na záda?

Existují desítky cviků na záda. Záleží na tom, čeho chce člověk cvičením dosáhnout. Podle toho se dají rozdělit na:

  • cviky na bolavá záda,
  • posilovací cviky na záda / cviky na kulatá záda,
  • cviky na spodní záda. [7]

Cviky na bolavá záda

Na bolavá záda fungují výborně takové cviky, při kterých si člověk svaly důkladně protáhne a uvolní křeč a nastřádané napětí:

  • kočka – protahování páteře na všech čtyřech,
  • leh na zádech s tlakem kolen do dlaní – člověk leží na zádech, zvedne kolena k břichu, chytí se rukama pod koleny a tlačí proti nim,
  • rotace trupu – vleže na zádech člověk mírně nakloní kolena na jednu stranu a poté na druhou, tímto způsobem se uvolňují i pánevní svaly,
  • pozice dítěte – nenáročný cvik, slouží k uvolnění nahromaděného napětí.

Protahovací cviky na záda je důležité provádět pomalu a s citem. [8, 9, 10]

Posilovací cviky na záda

Na posílení a zpevnění zádových svalů jsou vhodné tyto cviky:

  • superman – člověk si lehne na břicho, zvedne do vzduchu natažené ruce i nohy a snaží se v pozici nějakou chvíli vydržet,
  • delfíní zakopávání – zvedání nohou při lehu na břiše, lze cvičit na zemi i na lavičce,
  • dobré ráno – lehké předklánění vestoje s rukama za hlavou,
  • obrácený sněžný anděl – cvik připomíná dělání „anděla na zádech ve sněhu“, leží se ale na břiše a pohyb se provádí pouze rukama.

Tyto cviky jsou také výbornou prevencím proti hrbení. Tzv. kulatá záda se totiž objevují při ochabnutí zádových svalů. [11, 12, 13]

Cviky na spodní záda

Na posílení beder a spodní části zad jsou nejlepší komplexní cviky, při kterých dochází k zapojení hlubokých vnitřních svalů. Mezi nejlepší cviky na spodní záda tedy patří:

  • bird dog – zvedání protilehlých končetin na čtyřech, ztuhlá záda se tak krásně uvolní,
  • mrtvý tah – komplexní cvik, u kterého se zapojují velké svalové skupiny, je to ovšem náročný posilovací cvik vhodný pouze jako prevence,
  • zvedání pánve – člověk leží na zádech, pokrčí nohy, zapře se patami o zem a pomalu zvedá pánev, cvik je výborný také k posilování hýždí. [14, 15]
Jaké jsou nejlepší cviky na břicho? Důležitá je především správná technika a komplexní posílení těla
Přečtěte si také:

Jaké jsou nejlepší cviky na břicho? Důležitá je především správná technika a komplexní posílení těla

Jak často dělat cviky na záda?

Pokud se člověk věnuje ve svém volném čase aktivnímu odpočinku, procházkám a pravidelně sportuje, pravděpodobně jsou jeho zádové svaly v natolik dobré kondici, že jim bude stačit posilování dvakrát až třikrát týdně. Pokud se ale bolavá záda hlásí často o slovo, je dobré věnovat se jejich protahování a posilování každý den. Stačí pár minut denně a výsledky na sebe nenechají dlouho čekat.

Cvičení se člověk nemusí věnovat výhradně doma. I v práci si může vyhradit čas na pravidelné cvičení. Stačí se každou hodinu zvednout ze židle, udělat pár kroků vestoje a trochu se protáhnout. I taková zdánlivá maličkost může fungovat proti potenciálním problémům se zády. [16, 17]

Jak předcházet bolestem zad?

Cviky na záda nejsou to jediné, co funguje jako prevence proti bolestem zad. Ideální je inspirovat se obecnými zásadami zdravého životního stylu, které zahrnují:

  • správné držení těla – při chůzi i při sezení by se měl člověk soustředit na to, aby se neprohýbal v bedrech, ramena by se měla mírně stáhnout dolů,
  • pravidelný pohyb – stačí se několikrát týdně věnovat procházkám, turistice, plávání, jízdě na kole nebo jiným sportům,
  • zdravý jídelníček – nadváha a obezita představují zbytečnou zátěž pro páteř a přispívají k bolestem zad,
  • péče o duševní zdraví – dlouhodobý stres může být jedním ze spouštěčů bolestí, neboť způsobuje zvýšené svalové napětí a poruchy spánku,
  • nošení pohodlné obuvi – zejména ženy by měly dávat přednost teniskám či ortopedickým botám před lodičkami s vysokými podpatky,
  • výměna kabelky za batoh – záda jsou tak zatěžována rovnoměrně,
  • spaní na kvalitní matraci – ortopedická matrace se přizpůsobí váze těla, krční páteř je tak při spánku ve správné poloze. [18, 19, 20]

Zdroje: link.springer.com, bmj.com, europepmc.org, journals.lww.com, cochranelibrary.com, nejm.org, hindawi.com, sciencedirect.com, academic.oup.com, healthline.com, theses.cz, dspace.cuni.cz

Jaké jsou nejlepší cviky na záda?
Dokud člověk ještě netrpí bolestmi zad, měl by se věnovat cvikům zaměřeným na posílení a zpevnění zádových svalů. Mezi nejlepší cviky na posilování zad patří superman, dobré ráno, obrácený sněžný anděl nebo delfíní zakopávání.
Liší se nějak doporučené cviky na záda pro ženy od cviků pro muže?
Ženy by měly dbát na protahování a provádět hlavně cviky na záda s vlastní váhou. Cviky na záda pro muže mohou být zaměřeny více silově. Mezi muži je populární například mrtvý tah, který se provádí s činkami.
Jak provádět cviky na záda s činkami?
Cvičení s činkami může být výborné na posílení často opomíjených mezilopatkových svalů. Váhu činek by měl člověk volit vždy úměrně své kondici a síle. Zvedání příliš těžkých činek totiž může být spíše na škodu. Cviky s činkami by se měly provádět vždy pomalu a tahem.
  • Žá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 »