Trápí vás nedostatek železa? Změňte jídelníček a vyzkoušejte potravinové doplňky!

2. 11. 2022 7:30
přidejte názor
Autor: Depositphotos
Pokud se potýkáte s nevysvětlitelnou únavou, máte problém soustředit se na to, co právě děláte, bezdůvodně se zadýcháváte a pociťujete nepříjemné brnění v lýtkách či silné bolesti hlavy, na vině by mohl být nedostatek železa. Tento prvek je pro lidský organismus nezbytný, a proto je nutné dbát na jeho dostatečný příjem. Zajistit ho může vyvážený jídelníček v kombinaci s doplňky stravy.


Proč je železo důležité?

Železo (anglicky iron, značka Fe) patří mezi nejdůležitější stopové prvky, které se v lidském těle nachází. Má na starosti například transport kyslíku či aktivaci některých enzymů, ale i řadu dalších významných dějů, a proto je pro správné fungování organismu zcela nepostradatelné. Naše tělo si ovšem neumí železo samo vyrobit, takže ho člověk musí přijímat společně s potravou.

Zatímco v dospělém mužském těle je obsaženo zhruba 4–4,5 g železa, u žen je toto množství vlivem pravidelných krevních ztrát při menstruaci ještě o něco nižší. Jeho největší část se přitom nachází v hemoglobinu, což je krevní barvivo obsažené v červených krvinkách, které se starají o přenos kyslíku k jednotlivým buňkám, orgánům a tkáním. Podstatnou roli ale hraje i při krvetvorbě.

Kromě toho je pak železo také nezbytnou součástí svalového barviva označovaného jako myoglobin, které se stará o zásobování svalů kyslíkem, ale najdete ho i v enzymech, v játrech nebo třeba ve slezině. Má výrazný vliv na fungování některých enzymů a metabolických procesů, podporuje růst i činnost imunitního systému a chrání organismus před volnými radikály.

Aby toho nebylo málo, železo ovlivňuje také kognitivní funkce a podporuje koncentraci. Zároveň slouží jako katalyzátor různých reakcí, je nezbytné k tomu, aby si lidský organismus dokázal zachovat dostatečné množství energie, a mimo jiné je důležité i pro správné fungování gastrointestinálních procesů nebo pro regulaci tělesné teploty. [1, 2, 3, 4, 5]

Doporučená denní dávka železa

Člověk by měl denně zkonzumovat zhruba 14 mg železa. Toto množství ale samozřejmě neplatí pro všechny, protože vždy záleží také na pohlaví, na věku pacienta nebo na jeho zdravotním stavu. Svou roli zde ovšem hrají i geografické faktory, přičemž 14 mg železa je doporučená denní dávka právě pro Českou republiku. U jednotlivých skupin populace pak dané hodnoty vypadají následovně:

  • dospělí muži – 10–12 mg denně (někde se uvádí 8 mg),
  • dospělé menstruující ženy – 15 mg denně (někdy 18 mg),
  • těhotné ženy – 27–30 mg denně,
  • děti (od 4 do 8 let) – 10 mg denně,
  • děti (od 9 do 13 let) – 8 mg denně,
  • chlapci (od 14 do 18 let) – 11 mg denně,
  • dívky (od 14 do 18 let) – 15 mg denně,
  • osoby starší 50 let – 8 mg denně.

V souvislosti s doporučenou denní dávkou železa je nutné poznamenat také to, že neexistuje pouze jeden typ tohoto stopového prvku. Rozlišujeme totiž hemové železo (dvojmocné železo), které se vyskytuje v živočišných produktech a vstřebává se z něj zhruba 10–25 %, a poté nehemové železo (trojmocné železo), které je přítomné i v produktech rostlinných, ale vstřebává se z něj pouze 8–10 %. [6, 7, 8, 9, 10]

Nedostatek železa

Jelikož je železo pro lidský organismus naprosto nepostradatelné, jeho nedostatek může mít na člověka velice negativní vliv. Prvotních příznaků si nicméně pacienti příliš nevšímají, nebo je přičítají jiným zdravotním obtížím. Jedná se především o nevysvětlitelnou únavu a vyčerpání, problémy s koncentrací nebo třeba výraznou podrážděnost. To souvisí s nedostatečným okysličováním tkání.

Dalším signálem, že má člověk málo železa v krvi, bývá brnění v dolních končetinách (syndrom neklidných nohou), bledost rtů, dásní a nehtových lůžek, nevolnost, zvýšená lámavost vlasů a nehtů, suchá pokožka či zácpa. Kromě toho se pacient často zadýchává i bez námahy, objevují se u něj bolesti hlavy a závratě a pociťuje nepříjemné bušení srdce. Ostatní projevy pak mohou zahrnovat:

Nezapomínejte ovšem, že nedostatek železa u dětí i dospělých může způsobit značně individuální problémy, a to v závislosti na schopnosti konkrétního organismu se na danou situaci adaptovat. Příčiny nedostatku přitom mohou být různé. Patří sem například krevní ztráty při menstruaci, porucha vstřebávání železa, užívání některých léků, ale i některá onemocnění, která mají na svědomí chronické krvácení. Skladba jídelníčku je na vině spíše výjimečně. [11, 12, 13, 14, 15]

Jak doplnit železo?

Pokud jste zaznamenali příznaky nedostatku železa, trápí vás sideropenická anémie nebo vám schází železo v těhotenství, neměli byste tento problém podceňovat. Existuje přitom hned několik způsobů, jak tento stopový prvek doplnit. Do svého jídelníčku například můžete efektivně zařadit potraviny s obsahem železa nebo si můžete vybrat některé volně dostupné potravinové doplňky. Kromě toho pak existuje i železo na předpis, jehož užívání může doporučit váš ošetřující lékař.

Potraviny obsahující železo

U člověka, který konzumuje pestrou stravu, by rozhodně neměl být problém potřebnou dávku železa každý den získat. V některých situacích ovšem ani normální, vyvážený jídelníček není schopný pacientovi dodat vše, co potřebuje. Často se například objevuje nedostatek železa v těhotenství či během menstruace, ale samozřejmě není výjimkou ani u dětí nebo třeba u seniorů.

Lidé často za zdroj železa v potravinách považují pouze červené maso a vnitřnosti, případně další druhy masa, ryby a mořské plody. Ve skutečnosti však obsahují železo potraviny různorodé, takže se můžete zaměřit i na rostlinné zdroje. Jestliže hledáte přírodní železo v potravě, zaměřte se kromě výše zmiňovaných živočišných produktů také na tyto suroviny:

  • ovoce – meruňky, rozinky, třešně, višně, jahody, ostružiny, černý rybíz, datle, fíky,
  • zelenina – špenát, brokolice, chřest, celer, pórek, zelí, červená řepa, mořské řasy,
  • ořechy a semena – kešu oříšky, pistácie, lískové oříšky, mandle, kokos, dýňová semínka,
  • obiloviny a luštěniny – pšenice, žito, oves, ječmen, hrách, červené fazole a čočka, cizrna, sója,
  • další zdroje – sušené hříbky, sušené droždí, hořká čokoláda, tofu, quinoa. [16, 17, 18, 19, 20, 21]

Doplňky stravy s železem

Jestliže vás trápí akutní nedostatek železa, k dispozici jsou různé potravinové doplňky, které vám pomohou dostat jeho hladinu opět pod kontrolu. Mějte však na paměti, že lidský organismus není schopný přebytečné množství tohoto prvku vyloučit, takže je vhodné konzultovat užívání těchto doplňků s lékařem, aby nedošlo k předávkování železem.

Také nezapomínejte, že existují dva různé druhy železa. Doplňky stravy přitom často obsahují železo nehemové, které se typicky užívá nalačno, a mohou v některých situacích způsobit vedlejší účinky. Proto je nutné dbát na správné dávkování. Samotné vstřebávání železa je pak dobré podpořit také prostřednictvím vitamínu C, zatímco mléčné výrobky, vláknina a polyfenoly v čaji, kávě a červeném víně naopak jeho vstřebávání komplikují. [22, 23, 24]

Naturvita Železo Plus

Jedním ze způsobů, jak rychle doplnit železo, je například doplněk stravy s názvem Naturvita Železo Plus. V jednom balení se nachází 60 tablet, z nichž každá obsahuje 20 mg železa, ale i vitamín B12 a kyselinu listovou (kyanokobalamin). Tyto látky mají celou řadu společných vlastností a jsou pro lidské tělo velice prospěšné.

Obsažené železo přispívá k normální tvorbě červených krvinek a hemoglobinu (červeného krevního barviva), který na sebe váže kyslík při přenosu z plic do tkání. Kombinace účinných látek v přípravku Naturvita Železo Plus pak také pomáhá snižovat míru únavy a vyčerpání, podporuje fungování imunitního systému a podílí se na procesu dělení buněk, což je důležité například při hojení ran.

Favea Superželezo

Pokud hledáte vhodný doplněk stravy, který vám pomůže odbourat vaše zdravotní problémy, dále pak obsahují železo tablety Favea Superželezo. Tento přípravek se hodí například pro ženy a dívky, které se potýkají se silnou menstruací a ztrácejí tak větší množství krve, ale i pro těhotné ženy, vegetariány nebo dárce krve, protože zlepšuje podmínky pro tvorbu červených krvinek.

Balení doplňku stravy Favea Superželezo obsahuje 30 tablet, v nichž je kromě železa zahrnuta také kyselina listová. Kombinace těchto látek je přitom velice prospěšná pro lidské zdraví, protože snižuje míru únavy a vyčerpání, podporuje tvorbu červených krvinek i hemoglobinu, přispívá k normální funkci imunitního systému a k normálním kognitivním funkcím, ale ovlivňuje také energetický metabolismus.

Jamieson Železo

Hledáte-li opravdu silné železo v tabletách, vyzkoušet můžete také potravinový doplněk Jamieson Železo 35 mg s postupným uvolňováním. Jak již samotný název napovídá, jedna tableta v tomto případě obsahuje 35 mg železa, což je zhruba 250 % doporučené denní dávky. Proto je nutné dávat si pozor, aby nedošlo k předávkování (také nadbytek železa totiž může být velice škodlivý), a daný přípravek by rozhodně neměly užívat děti.

Centrum pro ženy

Mezi osoby se zvýšenou potřebou železa se řadí především ženy, a to hlavně vlivem menstruačního krvácení, těhotenství nebo třeba kojení. Kromě výše zmíněných přípravků obsahuje železo doplněk stravy Centrum pro ženy (60 tablet), který je vhodný právě pro tyto osoby. Jde totiž o kompletní multivitamín vytvořený speciálně pro potřeby moderních žen.

Potravinový doplněk Centrum pro ženy obsahuje vyvážené množství vitamínů, minerálů a stopových prvků. Nejdůležitější je vysoký obsah železa, vápníku a kyseliny listové, což přispívá k normální funkci imunitního systému, normální tvorbě červených krvinek i normálnímu energetickému metabolismu. Kromě toho však tablety obsahují také jód, řadu vitaminů (A, B1, B2, B6, B12, C, D a K), selen a zinek. Dobrou zprávou je navíc i to, že existuje také verze pro pány, a to Centrum pro muže (60 tablet).

Barny´s NovoFerrin

Nevíte si rady, jak doplnit železo v krvi? Pak by se vám mohl hodit přípravek Barny´s NovoFerrin (30 kapslí), který obsahuje unikátní liposomální formu železa LipoFer. Tato varianta nezatěžuje lidský organismus tolik jako některé další přípravky, pacienti její užívání dobře snáší a navíc má zhruba 5x vyšší vstřebatelnost.

Železo obsažené v doplňku stravy Barny´s NovoFerrin je důležité především pro tvorbu červených krvinek a hemoglobinu, ale i následný přenos kyslíku mezi tkáněmi. Kromě toho navíc daný přípravek obsahuje také vitamín C, jenž přispívá k normálnímu energetickému metabolismu a zvyšuje vstřebatelnost železa, a vitamin D, který podporuje normální funkci imunity a podílí se na procesu dělení buněk.

Zdroje: heureka.cz, nzip.cz, wikiskripta.eu, praktickelekarenstvi.cz, medicalnewstoday.com, ods.od.nih.gov, to.fnplzen.cz, mayoclinic.org

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