Vysoký cholesterol mají překvapivě i mladí. Poznává se to těžko, pomoci může úprava jídelníčku

23. 2. 2023

Sdílet

Bez cholesterolu se neobejde žádná z buněk lidského těla. Je důležitý pro syntézu hormonů a vitamínu D, najdeme ho v každé buněčné membráně a pomáhá se zpracováním tuků. Pokud ale hodnoty cholesterolu v krvi přesáhnou určitou mez, může to urychlit rozvoj aterosklerózy. Ta pak často vede až k infarktu nebo mozkové mrtvici.

Co je cholesterol?

Cholesterol je lipidová steroidní sloučenina, která představuje důležitý stavební prvek v membránách všech tělesných buněk. Podílí se také na stavbě steroidních hormonů, pomáhá se syntézou vitamínu D v kůži a tvoří se z ní žlučové kyseliny nezbytné ke správnému trávení tuků.

Problém nastává ve chvíli, kdy hodnota cholesterolu v krvi překročí fyziologickou mez. Zvýšená hladina cholesterolu v krvi může vést k ukládání lipidových částic na cévní stěny. Tímto způsobem vznikají lipidové proužky nebo tzv. aterosklerotické pláty. Cévy postupně ztrácí na pružnosti a jejich průměr se zužuje. Tento stav se odborně označuje jako ateroskleróza.

Jak spolu komunikují mozek a trávení. Lidé s duševními potížemi mají ve střevech jiné bakterie Přečtěte si také:

Jak spolu komunikují mozek a trávení. Lidé s duševními potížemi mají ve střevech jiné bakterie

Orgán, který daná tepna zásobí krví, je poté nedostatečně prokrven. Pokud dojde k úplnému zneprůchodnění cévy, orgán odumře. V praxi se přitom nejčastěji setkáváme s infarktem myokardu nebo cévní mozkovou příhodou.

Vysoký, nebo případně zvýšený cholesterol má dle dostupných dat 70–80 % české populace. Problém je, že mnoho lidí ani neví, že nemají normální hodnotu cholesterolu, protože nechodí na preventivní lékařské prohlídky. Na druhou stranu nelze cholesterol sám o sobě vnímat jen jako škodlivý. Jeho škodlivost se totiž odvíjí od toho, o jaký druh cholesterolu se jedná. [1, 2, 34]

Příčiny vysokého cholesterolu

Za vysokým cholesterolem a rozvojem aterosklerózy stojí hned několik rizikových faktorů. Tím nejvýznamnějším je nevhodná strava bohatá na živočišné tuky, jednoduché cukry a transmastné kyseliny. Zvýšený cholesterol může být zaviněn také:

  • chronickým stresem – pro tvorbu stresových hormonů potřebuje tělo více cholesterolu,
  • nadváhou a nedostatkem fyzické aktivity,
  • kouřením a nadměrným pitím alkoholu,
  • jinými chorobami – diabetem, vysokým krevním tlakem, hypofunkcí štítné žlázy a podobně,
  • genetickými predispozicemi – tzv. familiární hypercholestémie se projevuje zvýšenou hladinou cholesterolu i u mladých štíhlých lidí a dětí. [5, 67]

Jaké by měl mít cholesterol hodnoty?

Své hodnoty cholesterolu by měl znát každý člověk. V tomto případě ovšem ani tak nezáleží na hodnotě celkového cholesterolu v krvi, jako spíše na podílu jednotlivých druhů cholesterolu. Cholesterol totiž neputuje v krvi sám, musí být vždy navázán na transportní bílkovinu.

Jako nosiče fungují tzv. lipoproteiny. Podle toho, na jaký typ lipoproteinu je cholesterol navázán, se poté odvíjí jeho vlastnosti. Jak už tomu jejich název napovídá, lipoproteiny se skládají z tuků a bílkovin. U některých částic převažuje tuková část, u jiných zase bílkovinná:

  • LDL cholesterol (low density lipoprotein) – „zlý cholesterol“,
  • HDL cholesterol (high density lipoprotein) – „hodný cholesterol“,
  • TAG (triglyceridy) – jednoduché tuky získávané z potravy.

Hodnoty LDL cholesterolu

Lipoproteinové částice s vysokým obsahem tuku mají nízkou hustotu. Starají se o transport cholesterolu z jater do somatických buněk. LDL cholesterol má ovšem aterogenní vlastnosti, takže pokud je ho v krvi nadbytek, má tendenci ukládat se na cévních stěnách. Zde poté vznikají aterosklerotické pláty, které postupně omezují průtok krve.

Jaké by tedy měl mít LDL cholesterol hodnoty?

  • fyziologické rozmezí: do 3,4 mmol/l,
  • mírně rizikové hodnoty: 3,4–4,1 mmol/l,
  • vysoce rizikové hodnoty: nad 4,1 mmol/l.

Hodnoty HDL cholesterolu

U HDL cholesterolu vystupují jako nosiče lipoproteiny skládající se převážně z bílkovin, označují se tudíž jako lipoproteiny s vysokou hustotou. HDL cholesterol je lidově označován jako „hodný cholesterol“, protože dokáže odnášet přebytečný LDL cholesterol z cévních stěn do jater.

Působí tudíž jako prevence proti vzniku aterosklerotických plátů a brání rozvoji dalších komplikací v podobě infarktu či mrtvice. U HDL cholesterolu proto platí, že je žádoucí vyšší množství. Jaké by měl mít HDL cholesterol hodnoty?

  • fyziologické hodnoty: nad 1,2 mmol/l,
  • rizikové hodnoty: pod 0,9 mmol/l.

Hodnoty triglyceridů

Kromě hladiny cholesterolu se vyplatí věnovat pozornost ještě tzv. triglyceridům (TAG). Jedná se o jednoduché tuky vstřebávané z potravy, které slouží jako rychlý zdroj energie. Jejich zvýšené množství může být podobně škodlivé jako v případě LDL cholesterolu. Odborníci proto doporučují držet hodnoty TAG v krvi pod 1,7 mmol/l. Hodnoty v rozmezí 1,7–4 mmol/l už jsou považovány za rizikové.

Hodnoty celkového cholesterolu

Ačkoliv je potřeba vždy rozlišit, který z druhů cholesterolu je v převaze, existují doporučení i pro to, jaké by měl mít celkový cholesterol hodnoty:

  • fyziologické rozmezí: 3,9–5,2 mmol/l,
  • mírně rizikové hodnoty (zvýšený cholesterol): 5,2–6,2 mmol/l,
  • vysoce rizikové hodnoty (vysoký cholesterol): nad 6,2 mmol/l.

Hodnoty cholesterolu dle věku

Ideální hodnoty cholesterolu se pochopitelně liší i podle věku. U dospělých jsou za normu považovány o trochu vyšší hodnoty. U dětí do 15 let vypadá hodnocení hladiny cholesterolu následovně:

  • LDL cholesterol: norma pod 2,6 mmol/l (nad 3,1 mmol/l vysoké riziko),
  • HDL cholesterol: norma nad 1 mmol/l (pod 0,9 mmol/l vysoké riziko),
  • celkový cholesterol: norma pod 4,4 mmol/l (nad 5,5 mmol/l vysoké riziko). [8, 9, 10, 11, 12]
Obezita je nemoc, na kterou máme léky. Berou se doživotně Přečtěte si také:

Obezita je nemoc, na kterou máme léky. Berou se doživotně

Má vysoký cholesterol příznaky?

Nebezpečnost a záludnost vysokého cholesterolu spočívá v tom, že pacienta obvykle netrápí žádné výrazné zdravotní problémy. Měření cholesterolu v krvi je ovšem standardní součástí preventivních lékařských prohlídek. Díky tomuto vyšetření se na špatné hodnoty cholesterolu přijde u většiny lidí.

Samotný zvýšený nebo vysoký cholesterol tedy zpravidla nemá žádné projevy. Nebolí a člověka navenek nijak neomezuje. Mnohem větším problémem je ateroskleróza, která se rozvíjí jako důsledek nadměrného ukládání LDL cholesterolu na cévních stěnách. Příznaky zneprůchodnění tepny se poté liší podle toho, k jakému orgánu přivádí daná tepna krev.

Ateroskleróza může vyústit v nebezpečné komplikace, mezi které patří:

Léčba cholesterolu

Jak snížit cholesterol v krvi? V prvé řadě by měl lékař s pacientem zkonzultovat jídelníček a doporučit vhodná režimová opatření. Často není nutné hned předepisovat léky na snížení cholesterolu. U mnoha lidí totiž stačí radikálně změnit životní styl.

Máte zvýšený cholesterol?

Co jíst při vysokém cholesterolu?

Nízkocholesterolová dieta je založena na omezení celkového příjmu tuků. Vůbec nejhorší je kombinace ztužených tuků a cukrů, které najdete například v průmyslově vyráběných oplatkách, tyčinkách, zákuscích a čokoládách. Co se týče vaření, určitě byste se měli vyhýbat smažení. Nejlepší je pokrmy dusit, restovat nebo vařit v páře. Z jídelníčku byste měli vyřadit také tučná a smažená jídla, polotovary, uzeniny a alkohol.

Naopak je žádoucí zařadit do jídelníčku dostatečné množství:

  • vlákniny,
  • čerstvého ovoce a zeleniny,
  • celozrnného pečiva,
  • bílého masa a ryb,
  • zdravých tuků (kvalitní za studena lisované oleje, ghí),
  • ořechů a semínek.

Mezi potraviny snižující cholesterol patří také fermentovaná červená rýže, zelený čaj nebo sója obsahující lecitin.

Léky na cholesterol

Pokud se úprava jídelníčku nejeví jako efektivní, lékař pacientovi předepíše statiny (označení pro lék na cholesterol). Statiny působí přímo na játra, ve kterých zamezují syntéze cholesterolu. Jsou sice vysoce účinné, ale jakmile se nasadí, musí je pacient užívat celoživotně. Proto je vhodné snažit se cholesterol snížit nejprve úpravou stravování. [16, 17, 18, 19, 20]

Snížení cholesterolu přírodní cestou

Jak snížit cholesterol přírodní cestou? Kromě změny životosprávy se doporučuje vyzkoušet i byliny. Mezi vhodné bylinky na cholesterol patří:

  • řebříček obecný,
  • kořen čekanky,
  • kořen pampelišky,
  • zemědým lékařský,
  • kopřiva,
  • kotvičník zemní,
  • ostropestřec mariánský,
  • hořec žlutý,
  • pýr plazivý,
  • rozrazil lékařský,
  • ibišek.

Ze směsi několika výše uvedených nasušených bylin si lze připravit účinný čaj na cholesterol. Bylinky obsahují fytosteroly, které regulují vstřebávání cholesterolu ze střev do krevního řečiště. [21, 22, 23]

Zvýšený cholesterol a prevence

Zdravý životní styl je tou nejlepší cestou, jak si zajistit správné hodnoty cholesterolu. Odborníci doporučují:

  • omezit denní příjem tuků na 30 %,
  • omezit solení pokrmů,
  • dávat přednost kvalitním zdrojům tuků,
  • vyhýbat se sladkostem a průmyslově zpracovaným potravinám,
  • dodržovat pitný režim,
  • pravidelně se hýbat,
  • v případě nadváhy či obezity zhubnout,
  • nekouřit,
  • konzumovat alkohol jen výjimečně,
  • eliminovat stres. [24, 25, 26]

Zdroje: researchgate.net, sciencedirect.com, academic.oup.com, nhs.uk, hopkinsmedicine.org, ahajournals.org, cpzp.cz, ikem.cz, fno.cz, internimedicina.cz, vscht.cz

Jaké jsou příčiny vysokého cholesterolu?
U většiny pacientů stojí za zvýšenou hladinou cholesterolu v krvi nezdravá strava plná živočišných tuků, rychlých cukrů a transmastných kyselin. Rozvoj vysokého cholesterolu a případné aterosklerózy může být podpořen také nedostatkem pohybu, kouřením, chronickým stresem, přidruženým onemocněním (například diabetem) i dědičnými faktory.
Jaké jsou rizikové hodnoty cholesterolu?
U cholesterolu je nejdůležitější hlídat hladinu LDL cholesterolu, která by neměla u dospělého člověka překročit 3,4 mmol/l (vysoké riziko představuje 4,1 mmol/l a více). Celkový cholesterol by neměl překročit 5,2 mmol/l. O vysokém cholesterolu hovoříme u hodnot nad 6,2 mmol/l.
Jak se projevuje zvýšený cholesterol?
Vysoký cholesterol sám o sobě nebolí a nemá žádné klinické příznaky. Zdravotní potíže se navenek projeví většinou až ve chvíli, kdy se v těle rozvine ateroskleróza.

Autor článku

Copywriterka na volné noze spolupracující s Vitalia.cz. Po dokončení studia laboratorní diagnostiky ve zdravotnictví pracovala na oddělení klinické biochemie a hematologie.

'; 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 »