Vitamin K se podává injekčně novorozencům k zabránění krvácení. Nalézá se v zelenině, ale i mase

16. 5. 2025 7:30
přidejte názor
vitamín K
Autor: Depositphotos.com

Vitamín K je podobně jako jiné vitamíny látkou nezbytnou k správnému fungování těla. Rozlišují se v rámci něj 3 formy, a to vitamín K1, K2 a K3. Vitamín K1 přitom získáváme hlavně z listové zeleniny, vitamín K2 pak z živočišných zdrojů. Co se týče vitamínu K3, je syntetickou formou, která se nepoužívá kvůli negativnímu dopadu na jaterní buňky. Pokud jde o zdravotní přínosy vitamínu K, obecně se pokládá za prospěšný při hojení ran, srážení krve a pro zdraví kostí.

Tělo si vitamín K umí vytvořit, toto množství však samo o sobě nestačí a je nutné ho doplňovat stravou. Nicméně jestliže má člověk pestrý jídelníček, nedostatek vitamínu K mu nehrozí. Jeho snížená hladina zpravidla souvisí s určitými zdravotními problémy nebo k ní může vést užívání jistých léků. V takovém případě nelze spoléhat pouze na příjem vitamínu ze stravy, a doktor proto může navrhnout, abyste si pořídili doplněk stravy s touto látkou a hladinu vitamínu K tak vyrovnali.  

Co se dozvíte v článku
  1. Co je vitamín K?
  2. V čem je vitamín K?
  3. Jaké má vitamín K účinky?
  4. Doporučená denní dávka vitamínu K
  5. Nedostatek vitamínu K

Co je vitamín K?

Vitamín K je látkou, která se dobře rozpouští v tucích. V těle se ukládá jak v játrech, tak v dalších tělesných tkáních, jako například v mozku, srdci, slinivce břišní a kostech. Pro tělo představuje nepostradatelnou živinu, jelikož podporuje jeho správné fungování a rozvíjení se. Malé množství této látky si je tělo schopno samo vytvořit, nicméně je důležité přijímat vitamín K i z jiných zdrojů. 

Na rozdíl od jiných vitamínů není běžné, že by se užíval jako doplněk stravy. Většinou nám totiž postačí množství, které získáme z potravy. Pokud se však poohlížíte po doplňku s vitamínem K, lze zakoupit sám o sobě nebo v kombinaci s jinými živinami, a to třeba s vápníkem, hořčíkem či vitamínem D

Co obsahuje vitamín K?

Vitamín K zahrnuje různé sloučeniny, které se vyznačují podobnou chemickou strukturou. Rozlišují se tři jeho typy, a to vitamín K1, vitamín K2 a vitamín K3, přičemž nejznámější jsou vitamíny K1 a K2. Oba se přitom získávají z různých zdrojů a jsou tělem absorbovány různou rychlostí. Vitamín K3 (menadion) je syntetickou formou, která se nepřidává do potravin a nepůsobí ani v doplňcích stravy, jelikož v 80. a 90. letech 20. století bylo zjištěno, že ničí jaterní buňky. 

Vitamín K1 (fylochinon) se nalézá hlavně v potravinách rostlinného původu, najdeme ho především v listové zelenině a v některých dalších druzích zeleniny. Vitamín K2 (menachinon) je méně běžným typem a bývá součástí živočišných potravin a fermentovaných produktů. Obsahuje sloučeniny, které se získávají hlavně z masa, sýrů a vajec. U člověka ho vytvářejí střevní bakterie. [1, 2, 3, 4, 56]

V čem je vitamín K?

Potraviny obsahující vitamin K ve velkém množství jsou například hovězí játra, zelený čaj, chřest nebo tuřín. Ke vstřebávání vitamínu K přitom přispívá mít ve stravě zabudovaný tuk. Vyvarovat byste se však měli zmrazení potravin, protože může vést ke zničení této látky, ohřívání by nicméně mít vliv nemělo. 

Jak už bylo řečeno výše, vitamin K1 najdeme ve velké míře v listové zelenině, jako je kapusta, špenát, brokolice, zelí, hlávkový salát či mangold. Vysvětlení toho, proč se tato živina nachází hlavně v listové zelenině, je jednoduché, vitamín K totiž obsahuje chlorofyl. Mezi jeho další zdroje se řadí rostlinné oleje (sójový, olivový a řepkový), cereálie a některé druhy ovoce a zeleniny. Dobrým zdrojem vitamínu K v rámci ovoce jsou pak borůvky, fíky a konzervovaná dýně.

Vitamin K2 v potravinách

Zdrojem přírodního vitamínu K2 je maso včetně ryb. Dále se tato látka vyskytuje v mléčných výrobcích, vejcích, ale i japonském nattu (sýr vyráběný z fermentovaných sójových bobů). Co se týče mléčných výrobků, vitamínem K2 disponují sýry, jogurty a máslo. [7, 8, 9, 10]

Jaké má vitamín K účinky?

Klíčovou roli hraje vitamín K při hojení ran, srážení krve a je stěžejní také pro zdraví kostí. Co se týče srážení krve, produkuje vitamín K čtyři ze třinácti proteinů, které jsou nutné ke koagulaci. Ta pak zastavuje krvácení a napomáhá hojení. 

Vitamín K se rovněž aplikuje ke snížení rizika krvácení u onemocnění jater. Mimoto vytváří protein osteokalcin, jímž se předchází nízké hustotě kostí (osteopenie). Z některých studií zároveň vyplývá, že by vitamín K přijímaný ve větším množství mohl snižovat riziko zlomeniny, konkrétně zlomeniny kyčle. 

Na základě dalších studií se zdá, že by tato látka mohla mít příznivé účinky i na jiné potíže, například zmírňovat ranní nevolnosti a chránit kognitivní funkce včetně myšlení, učení, paměti a organizačních schopností. Kromě toho by vitamin K měl přispívat ke zdraví srdce, jelikož má snižovat zánět a zamezovat hromadění vápníku. Účastní se totiž na tvorbě matrix Gla proteinů (MGP) zabraňujících kalcifikaci a kornatění tepen

Poměrně nedávno bylo dále zjištěno, že jistá forma vitamínu K účinkuje jako antioxidant, u nějž se předpokládá, že by mohl mít zásadní význam v prevenci proti Alzheimerově nemoci a dalším onemocněním. Mimoto se uvádí, že dostatečný příjem vitamínu K má snižovat riziko mrtvice

Vitamín A je zodpovědný za zdravý zrak i funkční imunitní systém. Nachází se hlavně v játrech či mrkvi
Přečtěte si také:

Vitamín A je zodpovědný za zdravý zrak i funkční imunitní systém. Nachází se hlavně v játrech či mrkvi

Nežádoucí účinky vitamínu K

Vzhledem k jeho schopnosti tvořit sraženiny by měli být obezřetní ti, kteří berou léky na ředění krve, jako je warfarin. U nich by náhlé změny v příjmu vitamínu K mohly stát za zvýšením či snížením antikoagulačního účinku. Tito jedinci by se proto o užití doplňků s vitamínem K měli poradit se svým lékařem. Kromě toho se uvádí, že ve vzácných případech může nadměrný příjem vitamínu K vést ke ztrátě chuti k jídlu, otoku, potížím s dýcháním, zvětšeným játrům, podrážděnosti, žloutence nebo ztuhlým svalům.

Jaké má vitamín K2 účinky?

Vitamín K2 má dle všeho snižovat riziko srdečních onemocnění. Co se týče vitamínu K2 a vedlejších účinků, nebylo u něj zjištěno, že by vyvolával vážné zdravotní obtíže, pokládá se za bezpečnou látku. Maximálně nastávaly mírné nežádoucí účinky, a to průjem, nevolnost nebo kožní vyrážka. Ke kontraindikacím vitamínu K2 může pak docházet s léčivy, jako jsou antibiotika, warfarin, sekvestranty žlučových kyselin nebo orlistat. [11, 12, 13, 14, 15, 16]

Doporučená denní dávka vitamínu K

Co se týče konkrétních hodnot pro jednotlivá věková stadia člověka a podle jeho pohlaví, obecně se doporučují tyto denní dávky:

  • novorozenci do 6 měsíců: 2 mcg/den,
  • novorozenci od 7 do 12 měsíců: 2,5 mcg/den,
  • děti od 1 do tří let: 30 mcg/den,
  • děti od 4 do 8 let: 55 mcg/den,
  • děti od 9 do 13 let: 60 mcg/den,
  • dospívající ve věku od 14 do 18 let: 75 mcg/den,
  • muži ve věku 19 let a starší: 120 mcg/den,
  • ženy ve věku 19 let a starší: 90 mcg/den (včetně těhotných a kojících). 

Nicméně pokud člověk jí pestrou a vyváženou stravu, neměl by s dosažením tohoto množství mít problém. Zároveň je třeba dodat, že nadbytečný vitamín K se ukládá v játrech pro budoucí využití, takže ho není nutné konzumovat každý den. [17, 18, 19]

Kvíz: Znáte funkci jednotlivých vitamínů?

Vitamíny jsou látky, které získáváme z potravy. Nedokážeme si je totiž sami vytvořit. Přitom jsou pro náš život nepostradatelnými, jelikož mají vliv na různé procesy v těle, například správný růst. Obsahují je především ovoce a zelenina, k zabránění nedostatku vitamínů by však mělo postačit, když váš jídelníček bude tvořit pestrá strava.

Nedostatek vitamínu K

Na nedostatek vitamínu K lidé běžně netrpí. Pokud se tak stane, mohou za to nějaké vážné zdravotní obtíže, jako je například cystická fibróza nebo ucpaný žlučovod. Na vině bývají i poruchy trávení, jako je Crohnova choroba, syndrom krátkého střeva, ulcerózní kolitida či celiakie. Kromě toho může nedostatek vitamínu K způsobit užívání antikoagulantů, antikonvulziv nebo antibiotik či k němu mají tendenci podvyživení jedinci nebo ti, kteří pijí nadměrně alkohol nebo podstoupili bariatrickou operaci. 

Co se týče antibiotik snižujících hladinu vitamínu K, jedná se především o cefalosporiny a muselo by se je brát nejméně 10 dní v kuse. Dochází k tomu proto, že likvidují všechny bakterie, včetně těch produkujících vitamín K. Stát za nedostatkem této látky může ale též lék na hubnutí Orlistat a přídatná látka olestra sloužící ke snížení množství tuku, které může tělo absorbovat. Poněvadž je vitamín K rozpustný v tucích, může to mít vliv i na jeho hladinu v těle. Stejný efekt pak mají léky snižující cholesterol

Nízká hladina vitamínu K v těle přitom zvyšuje pravděpodobnost krvácení a může se projevit tím, že se dotyčnému dělají snadno modřiny nebo se hůře zastavuje krvácení. Mezi další příznaky snížené hladiny vitamínu K se řadí pocit ospalosti, záchvaty, zvracení, tmavě zbarvená stolice s krví, malé červené skvrny (petechie) či žloutenka. Řešením je v takovém případě začít brát doplňky s vitamínem K nebo navýšit příjem potravin, které ho obsahují.

Z čeho si myslíte, že nejvíce čerpáte vitamín K?

Je známou věcí, že novorozencům se po porodu podává injekce s vitamínem K za účelem zabránit možnému krvácení, zvláště do mozku. Činí se tak proto, jelikož děti přichází na svět bez bakterií ve střevech, které by si ho uměly vytvořit. Z mateřského mléka navíc nezískají potřebné množství a placenta ho nepropouští.

Nedostatek vitamínu K se u novorozenců pokládá za tak nebezpečný, že se tato látka podává injekčně plošně. Nejvíce jsou přitom tímto ohroženy nedonošené děti nebo ty děti, jejichž matka užívala léky proti záchvatům. Pokud by rodiče byli z nějakého důvodu proti podání injekce, jsou dostupné i kapky s vitamínem K. [20, 21, 22, 23, 24, 25]

Zdroje: webmd.com, health.clevelandclinic.org, healthline.com, medlineplus.gov, medicalnewstoday.com, mountsinai.org, nutritionsource.hsph.harvard.edu, nhs.uk, healthdirect.gov.au, ods.od.nih.gov, health.com

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