Nedostatek vitamínu C má velký dopad na lidské tělo. Kolik ho potřebujeme?

Sdílet

Autor: Depositphotos
Vleklá únava, problémy s pletí, tvorba modřin i zhoršená imunita. To jsou jen některé symptomy, které upozorní na deficit vitamínu C. Dlouhodobý nedostatek přitom způsobuje i další potíže. Protože si lidské tělo nedokáže tento vitamín uložit do zásoby, je třeba ho pravidelně doplňovat.

Vitamín C (též kyselina L-askorbová nebo kyselina askorbová) je nesmírně důležitý pro dobrý zdravotní stav. Kromě jiného pomáhá udržovat ve formě kosti, pokožku i žilní systém. Řadí se také mezi významné antioxidanty. Přirozeně se vyskytuje v některých potravinách, zejména v ovoci a zelenině. K dispozici jsou také doplňky s obsahem vitamínu C v různém množství.

Co se dozvíte v článku
  1. Jaká je doporučené denní množství vitamínu C
  2. Jak vitamín C funguje v těle
  3. Projevy nedostatku vitamínu C
  4. V čem vitamín C pomáhá?
  5. Céčko má potenciál v léčbě cukrovky i alergií
  6. Které potraviny obsahují vitamín C
  7. Komu hrozí nedostatek vitamínu C
  8. Dá se vitamínem C předávkovat?
  9. Závěry a doporučení ohledně vitamínu C

Proč a kolik vitamínu C lidský organismus potřebuje a kde ho najít?

Jaká je doporučené denní množství vitamínu C

Vitamín C je rozpustný ve vodě a tělo si ho neukládá do zásoby. Aby si lidé udrželi adekvátní hladinu vitamínu C, musí ho každý den přijímat dostatečné množství.

Ve 40. letech 20. století byla provedena vědecká studie, která měla za úkol zjistit, kolik vitamínu C člověk potřebuje, aby se vyhnul kurdějím. Závěry byly později použity k odůvodnění doporučení Světové zdravotnické organizace (WHO) o tom, kolik vitamínu C je třeba pro dobré zdraví. Tehdy vědci došli k tomu, že stačí pouhých 10 mg. WHO si závěry mylně vyložila a ve svých doporučeních vydala čtyřnásobně zvýšené množství. Zcela nová analýza, se kterou přišli vědci v loňském roce, však naznačuje, že ani to zdaleka nestačí. Lidé by tak měli přijímat asi 95 mg denně.

Nedávno byla také aktualizována doporučovaná množství sodíku a draslíku a odborníci vybrali pro přehodnocení v blízké budoucnosti i další živiny, například hořčík, omega-3 mastné kyseliny nebo vitamín E.

Vědci také zjistili, že zotavení z dlouhodobého nedostatku vitamínu C trvá déle, než se dříve myslelo, a v tomto období je nutné přijímat vyšší dávky vitamínu C.

Jak vitamín C funguje v těle

Tělo potřebuje vitamín C pro řadu různých funkcí. Namátkou můžeme jmenovat některé nejzákladnější:

Na co je dobrý vitamín C

  • pomáhá tělu v produkci kolagenu, L-karnitinu a některých neurotransmiterů,
  • jako antioxidant pomáhá odstraňovat z těla nežádoucí látky,
  • podílí se na vstřebávání železa,
  • posiluje imunitní systém,
  • zlepšuje hojení ran.

Mezi nežádoucí látky, které pomáhá vitamín C z těla odstranit, patří ve velké míře volné radikály, které jsou výsledkem přirozených tělesných procesů, vlivu znečištěného životního prostředí a dalších faktorů. Mohou vést k oxidativnímu stresu, který může následně způsobit poškození buněk.

Antioxidační aktivita vitamínu C může pomoci snížit výskyt zánětů v těle a pravděpodobnost rozvoje různých onemocnění, včetně některých druhů rakoviny.

K produkci kolagenu, který je hlavní složkou pojivové tkáně a tvoří zhruba 1 až 2 procenta svalové tkáně, je také nutná dostatečná hladina vitamínu C. Kolagen je důležitou součástí tkání, jako jsou šlachy, vazy, kůže, rohovka, chrupavka, kosti, střeva nebo cévy.

Nízká hladina vitamínu C v těle může vést také k onemocnění zvanému kurděje. Mezi jeho příznaky patří otoky kloubů, krvácení dásní, uvolňování zubů, chudokrevnost a únava.

Projevy nedostatku vitamínu C

Nedostatek vitamínu C je poměrně dobře patrný na pokožce. Kromě ochablosti a zašedlé barvy často způsobuje tvorbu malých pupínků, podobných akné, na pažích, stehnech nebo hýždích, avšak ty samy o sobě k určení nedostatku vitamínu C v organismu nestačí.

K dalším symptomům jeho deficitu patří křehké a lámavé vlasy a nehty, snadná tvorba modřin, pomalu se hojící rány, problémy s klouby, zhoršená imunita, chudokrevnost, nárůst hmotnosti, únava i zhoršená nálada.

V čem vitamín C pomáhá?

Vitamín C může mít pozitivní vliv na zdraví kardiovaskulárního systému, a to hned z několika důvodů. Studie totiž naznačují, že může pomoci rozšířit krevní cévy a zlepšit průtok krve, zlepšit produkci oxidu dusnatého (kladně působí v řadě tělesných procesů) i pozitivně ovlivnit některé aspekty aterosklerózy.

To vše by mohlo pomoci při eliminaci vzniku chorob kardiovaskulárního systému včetně ochrany před hypertenzí. Přesto je třeba ještě dalších výzkumů, které by jednoznačně potvrdily, že užívání doplňků s vitamínem C by mohlo pomoci ochránit zdraví srdce. Stejně tak se experti chtějí zaměřit na důkladnější a dlouhodobější výzkum možnosti, že vitamín C snižuje riziko vzniku šedého zákalu a podílí se na zpomalení progrese věkem podmíněné makulární degenerace (postižení oční sítnice), protože se domnívají, že oxidační stres může významně přispívat ke vzniku obou těchto stavů. Antioxidační aktivita vitamínu C tak může být velmi prospěšná.

Céčko má potenciál v léčbě cukrovky i alergií

Studie z roku 2019 zkoumala 31 lidí ve věku okolo 60 let, aby se zjistilo, zda užívání doplňků s vitamínem C změnilo hladinu glukózy po jídle. Po užívání doplňků po dobu 4 měsíců se hladina glukózy i krevní tlak účastníků zlepšily ve srovnání s užíváním placeba. To naznačuje, že vitamín C by se mohl stát pomocníkem při léčbě diabetu. A nejenom to.

O rok dříve byla sedmdesátka dobrovolníků s kožními či respiračními alergiemi účastníky studie, při které jim byly nitrožilně aplikovány různé dávky vitamínu C a vědci sledovali závažnost jejich symptomů. Došli k závěru, že užívání vysokých dávek vitamínu C může pomoci snížit příznaky alergie. Našli také důkazy naznačující, že u alergiků jsou časté nízké hladiny vitamínu C v organismu.

Které potraviny obsahují vitamín C

Nejlepším zdrojem vitamínu C je čerstvé ovoce a zelenina. Teplo a vaření však mohou zničit část obsahu vitamínu C v těchto potravinách, proto je nejlepší jíst je syrové.

Ovoce a zelenina s poměrně vysokým množstvím vitamínu C

  • červené a zelené papriky
  • pomeranče a 100% pomerančový džus
  • grapefruit
  • kiwi
  • jahody
  • špenát a další zelená listová zelenina
  • rajčata
  • brambory
  • zelený hrášek
  • citrón
  • pomeranč
  • černý rybíz
  • brokolice
  • petržel

Komu hrozí nedostatek vitamínu C

Nedostatkem vitamínu C jsou ohroženi zejména kuřáci a lidé vystavení cigaretovému dýmu (pasivní kouření), osoby bez pestrého jídelníčku, jedinci s určitými zdravotními obtížemi, zejména takovými, které zahrnují střevní malabsorpci. 

Dá se vitamínem C předávkovat?

Maximální denní příjem vitamínu C u dospělého člověka by neměl přesáhnout 2000 mg. Je nepravděpodobné, že by příliš mnoho vitamínu C způsobilo nějaké výrazné problémy, ale pokud člověk zkonzumuje více než 1000 mg vitamínu C denně, může to vést k průjmu a gastrointestinálním potížím.

Odborníci upozorňují, že existuje riziko vzniku ledvinových kamenů, pokud to s příjmem vitamínu C prostřednictvím doplňků budeme přehánět. Stejně tak by mohlo dojít ke zvýšení rizika kardiovaskulárních problémů u žen po menopauze, avšak zatím jde pouze o hypotézy bez dostatku důkazů, které by jejich pravdivost nade vší pochybnost doložily.

Lidé s dědičnou hemochromatózou, což je porucha vstřebávání železa, by se měli poradit se svým lékařem, než začnou užívat doplňky stravy s vitamínem C.

Závěry a doporučení ohledně vitamínu C

Protože si lidské tělo nedokáže vytvořit vitamín C nebo jej ukládat, musí být pravidelně doplňován, aby se předešlo jeho nedostatku, ideálně prostřednictvím čerstvého ovoce a zeleniny.

Galerie: České ovoce a vitamín C

Existuje mnoho známek a symptomů jeho deficitu, mezi ty první patří únava, modřiny, krvácení dásní, bolesti kloubů a suchá, drsná pokožka. Jak se nedostatek stupňuje, může dojít k deformaci nehtů, lámavosti vlasů, rány se mohou déle hojit a přidají se problémy s imunitním systémem. Záněty, anémie z nedostatku železa a nevysvětlitelné přibírání na váze mohou být dalšími příznaky, které mohou na tento problém upozornit.

Dobrou zprávou je, že jakmile dojde k doplnění vitamínu C, obvykle postupně dojde i k ústupu těchto problémů.

Autor článku

Novinářka na volné noze se zkušenostmi z tištěných i online titulů. V současné době pracuje pro vlastní portfolio klientů. K tematice zdraví a zdravého životního stylu má blízko díky původní profesi zdravotnického pracovníka.

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