Syndrom neklidných nohou způsobuje poruchy spánku. Jak se ho zbavit?

14. 10. 2019 10:00
26 nových názorů
ručitel
MUDr. Daniel Petr | Odborný garant článku
„Syndrom neklidných nohou může podstatně zhoršit kvalitu spánku. Někdy postačí režimová opatření a úprava životního stylu.“

Syndrom neklidných nohou (SNN) je neurologické onemocnění, pro které je charakteristické nutkání pohybovat končetinami. V rozvinuté formě způsobuje tato zdravotní komplikace problémy se spánkem a zhoršuje kvalitu života nemocných. Pomoci může změna životního stylu nebo léčba pomocí vhodně zvolených léčivých přípravků. 

Co je syndrom neklidných nohou?

Syndrom neklidných nohou (SNN nebo také nemoc neklidných nohou), který je v zahraničí známý také pod zkratkou RLS (restless legs syndrome), patří v dnešní době mezi poměrně časté zdravotní problémy. Ve skutečnosti se však nejedná o nic nového, příznaky tohoto onemocnění totiž byly poprvé popsány již v sedmnáctém století a jako diagnóza existuje od roku 1945.

Podle lékařů trápí syndrom neklidných nohou v České republice téměř milion pacientů a častěji se vyskytuje u žen. První příznaky se mohou dostavit již v dětství, zatímco s postupujícím věkem obvykle nabírají na intenzitě. Onemocnění však může propuknout v podstatě v jakémkoliv věku. Syndrom neklidných nohou přitom postihuje především dolní končetiny, ale v některých případech mohou být zasaženy také ruce a trup.

Příčiny vzniku

Z čeho vzniká syndrom neklidných nohou? Přesný mechanismus, jak tato choroba funguje, prozatím není známý. Odborníci se nicméně domnívají, že má neurologické příčiny. Svou roli však mohou hrát také další důležité faktory, jako je genetika, nedostatek železa či další onemocnění. Jak přesně se však nemoc spouští, je prozatím stále záhadou.

Formy onemocnění

Syndrom neklidných nohou se vyskytuje v primární a sekundární formě. Co se týče primární formy, ta není spojena s žádným dalším onemocněním a podle lékařů je zde důležitým faktorem především genetika. Syndrom neklidných nohou má totiž v takovém případě zhruba u poloviny pacientů rodinný výskyt.

Sekundární forma SNN je podmíněna jiným onemocněním či změnami v lidském organismu. Lékaři spojují syndrom neklidných nohou například s těmito faktory:

Příznaky onemocnění mohou zhoršovat také některé léky, jako jsou antiemetika, antipsychotika, antidepresiva nebo některé přípravky proti nachlazení a alergiím s obsahem antihistaminik.

Jaké má syndrom neklidných nohou příznaky?

Typickým projevem syndromu neklidných nohou je nesnesitelné nutkání pohybovat končetinami, které je většinou vyvolané nepříjemnými pocity v nohách, jako je slabé brnění, mravenčení, svědění, nebo dokonce ukrutná bolest. Nejčastěji se toto nutkání objevuje v klidovém stavu, kdy pacient není aktivní, nebo večer před usnutím.

Lidé si dále stěžují také na tyto projevy:

  • Bolesti lýtek
  • Štípání nebo lechtání
  • Chladnutí či zteplání končetin
  • Pocit těžkých nohou
  • Pocit slabých nohou
  • Svědění nohou před spaním
  • Třes nohou v klidu
  • Otoky
  • Zvýšená tvorba žilek
  • Sklon k tvorbě varixů

V důsledku syndromu neklidných nohou se u některých pacientů rozvíjí také další nepříjemná zdravotní komplikace, a to dlouhodobá nespavost. Syndrom neklidných nohou totiž ruší usínání a spánek. Pacienti následně mají problémy se soustředěním, trápí je deprese a nejsou schopní běžně fungovat. Některým osobám činí obrovské potíže také delší cestování nebo situace, které vyžadují dlouhé sezení.

Většina lidí (80 %), které trápí syndrom neklidných nohou, si stěžuje také na onemocnění označované jako PLMS neboli periodické pohyby končetin ve spánku. Pro něj jsou charakteristické mimovolné trhavé pohyby či škubání nohou ve spánku, což pacienta obtěžuje v průběhu noci.

Trápí vás nutkání pohybovat dolními končetinami?

Diagnostika SNN

Určit správně diagnózu syndromu neklidných nohou je možné pouze pomocí kvalitně provedené anamnézy. Lékaři se při tom zaměřují na přítomnost čtyř základních kritérií. Patří sem nutkání pohybovat končetinami, které vyvolávají nepříjemné pocity (parestezie), zhoršování příznaků v klidu, zhoršování příznaků večer či v noci a skutečnost, že nepříjemné pocity odezní společně s pohybem.

Co se týče problémů se nespavostí, dále se k diagnostice využívá také polysomnografické vyšetření, které monitoruje právě pacientův spánek. Skládá se z vyšetření pomocí elektroencefalografu, kdy dochází ke snímání elektrických potenciálů mozku z povrchu hlavy, záznamu elektrické aktivity svalů, záznamu pohybu očí, záznamu dýchání a aktigrafie.

Pro vyloučení dalších onemocnění se často provádí také laboratorní vyšetření krve. Díky tomu je možné stanovit diagnózu dalších komplikací, jako je například nedostatek železa.

Léčba SNN

Lidé často považují symptomy SNN pouze za projev sedavého způsobu života či stárnutí nebo se bojí, že jsou příznaky příliš vágní a těžce popsatelné, a proto lékaře vyhledají až pozdě. To je velká chyba, protože vhodná terapie může obtěžující symptomy zmírnit či zcela potlačit. Jaká tedy existuje na syndrom neklidných nohou léčba a co na neklidné nohy pomáhá?

Hořčík je pro lidské tělo velice důležitý. Jak řešit jeho nedostatek?
Přečtěte si také:

Hořčík je pro lidské tělo velice důležitý. Jak řešit jeho nedostatek?

Pacientům, kteří trpí mírnou formou syndromu neklidných nohou, obvykle pomůže změna životního stylu. Ta spočívá například ve cvičení, změně jídelníčku nebo ve snížení konzumace kofeinu, alkoholu a tabáku. Zároveň pomáhá dodržování pravidelného spánkového režimu, masáže nohou či různé obklady. Je dobré vyřešit s lékařem i nedostatek železa, kyseliny listové a hořčíku v organismu. Ačkoliv však režimová opatření mohou ulevit od nepříjemných projevů, nemoc nevyléčí.

U středních a těžkých případů je často nutné přistoupit k farmakologické léčbě. Zde je důležité vyzkoušet různé druhy léčiv, protože každému pacientovi může pomoci něco jiného. Mezi nejčastěji předepisované léky na syndrom neklidných nohou patří dopaminergní látky, které zvyšují hladinu dopaminu v mozku, či gabapentin enacarbil a pregabalin. Dále se předepisují také benzodiazepiny, opioidy a antikonvulziva.

Někdo pak doporučuje na syndrom neklidných nohou babské rady. V ložnici je údajně dobré před spaním pořádně vyvětrat, což prospívá klidnému spánku a mělo by to také eliminovat pocit brnění či neklidu v nohou. Nohy je pak dobré před ulehnutím střídavě sprchovat studenou a teplou vodou, přičemž důležitý je i dostatečný odpočinek. Do každodenního jídelníčku navíc zařaďte ovesné vločky, syrový špenát, mandle, oříšky, mandlový olej nebo hnědou rýži.

A co pomáhá na syndrom neklidných nohou, pokud nejde o primární formu nemoci? U sekundární formy syndromu neklidných nohou samozřejmě pomůže především léčba onemocnění, které patří mezi vyvolávající příčiny této poruchy. Pocit neklidných nohou by měl vzápětí spolu s ostatními příznaky alespoň částečně ustoupit.

Syndrom neklidných nohou v těhotenství

Prevalence syndromu neklidných nohou u těhotných pacientek se pohybuje zhruba mezi 10 a 25 %. Nutkání pohybovat končetinami nabývá na intenzitě postupně, neklidné nohy v noci způsobují nastávajícím maminkám celou řadu obtíží a nejhorší bývá situace v průběhu třetího trimestru. Léčba je problematická, jelikož většina doporučovaných přípravků je v těhotenství kontraindikována. Užívá se proto železo a magnesium. Po porodu problémy obvykle vymizí.

Syndrom neklidných nohou u dětí

Syndrom neklidných nohou často trápí starší pacienty, ale projevit se může už v dětství (například syndrom neklidných nohou u miminka) nebo v průběhu dospívání. Malí pacienti pak často mají potíže s usínáním a udržením spánku. Z toho důvodu se po ulehnutí převalují v posteli, propínají a skrčují nohy, třou je o sebe, kopou nohama nebo znovu vstávají, aby si ulevili chůzí.

Dítě trpící syndromem neklidných nohou může vykazovat výrazný motorický neklid, což se podobá příznakům ADHD (porucha pozornosti s hyperaktivitou). Zároveň se může projevit PLMS, agresivní chování vůči okolí nebo deprese a výjimkou nejsou ani úzkostlivé stavy. Jaká tedy existuje pro syndrom neklidných nohou pomoc, jestliže se rozvine u malých pacientů?

Pokud se tyto problémy objeví, je třeba včasná a komplexní diagnostika, která spočívá především v tom, že dítě by mělo být schopné popsat příznaky svými slovy. Co se týče léčby, v první řadě je nutné odstranit faktory, které mohou SNN zhoršovat, jako je například nedostatečná spánková hygiena či deficit železa. Dále je dobré upravit denní režim, zařadit relaxační techniky a pravidelně cvičit. V závažnějších případech se používá farmakoterapie.

Michaela (neregistrovaný)
Vážení se SNN, mám 70 roků s tímto problémem bojuji celý život, čím jsem starší tím se to zhoršuje. Samozřejmě jsem byla několikrát u neurologa na vyšetření. Předepsané léky jsem odmítla brát, protože i když jsou slabé tak jsou na léčbu Parkinsonovy choroby a pokud bych je začala užívat tak už na pořad.???? Mně pomáhá když už nemohu usnout delší dobu, vstanu, sprchuji si nohy velice studenou vodou ( co vydržím), vysuším froté ručníkem a pak natřu Koňskou mastí - chladivá, nechám zaschnout. Je to drsné, ale pomáhá to, poradil mně to před 50 lety starý pan doktor.
libuse horenska (neregistrovaný)
dobry den,je 76 let mamSNN a beru na to gabanox 300 brneni a nocni mravenceni snasim ,ale mam jiny problem kdyz delsi dobu stojim asi hodinu ,tak dostanu velkou bolest do prstu na leve noze a jedna se o tri prostredni prsty ....ukazovacek ,prostrednicek a prstenicek ,chvili trva nez hrozna bolest prejde v mirnou ,.dekuji horenska
MUDr. Thai Bao Han (neregistrovaný)
Dobrý den, konzultujte s praktickým lékařem nebo ošetřujícím neurologem ohledně dalšího postupu a léčby.
Ivana (neregistrovaný)

Dobrý den, pane doktore, mám prý ten SNN, co se pamatuji tak od 15 let a dnes mi je 72 let.Navštěvuji neurology, byla jsem na operaci páteře, s tím, že mám skříplý kořen nervů v páteři. prosila jsem doslova o pomoc, protože se to nedá vydržet, kroutí se mnou svědění a bolest v nohách. Bylo mně řečeno, že doufají.Nechci se ucukat a tak jsem tu operaci podstoupila. Když jsem se probudila z narkozy, okamžitě to začalo a ještě to bylo horší, nehledě na to, že mě nechali v nemocnici týden na tu operaci čekat!!!Jsem zoufalá, navštěvuji neurologa, dostávám léky, které mi asi před 20ti léty předepsal přednosta neurologické kliniky v Hradci Králové, MUDr Radomír Taláb.MADOPAR 200MG, GLEPARK 0,77 MG, ASENTRA 50 MG. Ta operace loni mně vůbec nepomohla, naopak. Nesnesu boty, ponožky.Co si mám dál počít pane doktore?
Děkuji za Vaši odpověd.Ivana Víchová.

Dobrý den,
je mi moc líto, že Vás to tak trápí.
Dodržujete režimová opatření? Dostatek pohybu, zdravý jídelníček atd - jak je uvedeno v článku?
Ještě mě napadá, můžete vyzkoušet potravinový doplněk - “Remyelin” (je volně prodejný). Doporučuje se lidem s podobnými problémy, jako máte vy.

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