Resveratrol je silný přírodní antioxidant. Najdeme ho v ořeších i červeném víně

24. 11. 2021 8:00
1 nový názor
Autor: Pixabay

Pomáhá při léčbě neurodegenerativních onemocnění, zlepšuje paměť a má omlazující účinky. O přírodní látce, která je známá jako resveratrol, koluje na internetu řada pozitivních informací. Ne všechny se ale týkají lidí. Jak je to ve skutečnosti s účinky resveratrolu, co ho pojí s červeným vínem a v jakých potravinách se nachází?

Co to je resveratrol?

Co se dozvíte v článku
  1. Co to je resveratrol?
  2. Kde se resveratrol nachází?
  3. Jaké má resveratrol účinky?
  4. Resveratrol a Francouzský paradox
  5. Dávkování resveratrolu
  6. Nežádoucí účinky
  7. Cena Resveratrolu
  8. Prodej Resveratrolu
  9. Nepravdivá studie

Resveratrol je látka přírodního původu, která spadá do skupiny fytoalexinů, jež chrání rostliny před poškozením, ultrafialovým zářením a plísněmi. V posledních letech se však stále častěji objevuje ve spojitosti s lidským zdravím, na které má mít podle některých studií pozitivní účinky. Resveratrol byl poprvé objeven v kořenech kýchavice v roce 1940, zájmu širší veřejnosti se však začal těšit až o necelé čtvrtstoletí později, kdy byl zkoumán pro svůj potenciální kladný vliv na kardiovaskulární onemocnění.

Obecně se resveratrol vyskytuje ve dvou formách, konkrétně ve formě „cis“ a „trans“. Ačkoli se jedná o jednu a tu samou látku, každá z nich má rozdílnou strukturu molekul. Pro organismus je důležité vybírat vždy trans resveratrol, který je pro tělo biologicky dostupný a daleko lépe vstřebatelný.

Kde se resveratrol nachází?

Přirozeně nalezeme resveratrol v potravinách, jakými jsou:

  • sušené kořeny křídlatky japonské,
  • tmavé hroznové víno,
  • borůvky,
  • brusinky,
  • švestky,
  • arašídy,
  • pistácie,
  • vlašské ořechy,
  • černý rybíz,
  • moruše.

Vzhledem k jeho bohatému výskytu ve slupkách a jadérkách tmavých hroznů se resveratrol v hojném počtu nachází také v červeném víně, kdy jeden litr obsahuje zhruba 0,2 až 5,8 mg této látky v závislosti na odrůdě. U bílého a růžového vína je výskyt resveratrolu zhruba stonásobně nižší. Důvodem je pravděpodobně kratší doba lisování a tedy i kontaktu mezi slupkou a dužinou plodu. Kromě potravin nalezneme resveratrol také v podobě doplňků stravy, typicky ve formě kapslí.

Jaké má resveratrol účinky?

Kromě účinků, které má tato látka na rostliny, se stále více zkoumají i její pozitivní dopady na lidské zdraví. Pomáhat by měla v léčbě a prevenci různých nemocí, včetně:

Vzhledem k tomu, že resveratrol patří do skupiny látek zvaných polyfenoly, o nichž se obecně ví, že působí jako antioxidanty, je známý také jako látka snižující aktivitu volných radikálů. To jinými slovy znamená, že pomáhá chránit buňky před oxidačním stresem a předcházet tak vzniku závažných civilizačních chorob. Spolu s kvercetinem a kurkuminem patří mezi tři nejsilnější přírodní antioxidanty vůbec.

Kromě toho se podílí na kontrole tělesné hmotnosti, podporuje normální činnost srdce, přispívá k regulaci krevního tlaku, správné činnosti cévní soustavy a normálnímu stavu pokožky. Pomáhá rovněž snižovat LDL cholesterol, který stojí za ucpáváním cév, je nápomocný při léčbě neurodegenerativních onemocnění, zlepšuje paměť a posiluje imunitní systém. Někteří odborníci o něm hovoří také jako o elixíru mládí.

Je však nutné podotknout, že řada účinků byla potvrzena pouze na základě studií prováděných na zvířatech, nikoli na lidech.

Stárnutí

Hned několik studií, které byly provedeny na zvířatech, naznačuje, že resveratrol zpomaluje stárnutí a prodlužuje život u ryb, kvasinek a myší [1]. A ačkoli se na lidech žádné podobné účinky nikdy nepotvrdily, někteří jsou toho názoru, že stejně jako na zvířata působí resveratrol na lidi [2]. Stárnutí má údajně oddalovat tím, že podporuje produkci takzvaných genů dlouhověkosti.

Vztah mezi resveratrolem a dlouhověkostí u lidí zkoumala jedna italská studie u 783 dobrovolníků. Žádnou souvislost mezi koncentrací resveratrolu v moči a mortalitou se jim však najít nepodařilo. Nicméně je pravdou, že ze skupiny účastníků, kteří v moči měli málo resveratrolu, zemřelo více osob než ze skupiny jedinců s vysokou koncentrací.

Protizánětlivé účinky

Jiné studie naznačují, že resveratrol potlačuje tvorbu zánětlivých mediátorů, jako jsou například cyklooxygenáza 1 a 2. Pozitivní vliv má látka také na zánětlivé procesy u kuřáků s chronickou obstrukční plicní nemocí [3]. Resveratrol rovněž potlačuje peroxidaci lipidů u potkanů s poškozenými ledvinami a pomoci by údajně mohl i pacientům se začervenáním obličeje.

Rakovina

Podle různých výzkumů je resveratrol účinný také ve všech stádiích karcinogeneze, tedy iniciace, promoce i progrese [4]. Je to mimo jiné dáno antioxidačními účinky, ale i tím, že se látka:

  • podílí na neutralizaci volných radikálů,
  • podporuje sebedestrukci zmutovaných nádorových buněk,
  • blokuje růst metastáz a množení rakovinotvorných buněk,
  • zvyšuje citlivost buněk na chemoterapií navozenou apoptózu (sebedestrukci).

Ne všechny studie však účinnost resveratrolu potvrzují. Jedna z nich, která byla prováděná na 24 pacientech s opakovaně se vracejícím mnohočetným myelomem, poukazuje na to, že resveratrol nemá v léčbě prakticky žádnou účinnost a dokonce má i závažné nežádoucí účinky [5]. Ty je nutné před použitím přípravku u takto nemocných pacientů nejprve pečlivě prozkoumat.

Kardiovaskulární onemocnění

Své pozitivní účinky má resveratrol i v léčbě a prevenci kardiovaskulárních onemocnění [6]. Některé studie na potkanech prokazují, že zlepšuje funkci srdce v systole i diastole po infarktu myokardu, což brání remodelaci a trvalému poškození srdce po tomto onemocnění. Zvyšuje rovněž produkci oxidu dusnatého a má tak vazodilatační účinky (rozšiřuje cévy).

A podobně jako u onkologických nemocí, i v tomto případě přinesly studie smíšené výsledky. Zatímco některé studie menšího rozsahu naznačují, že denní dávka resveratrolu o velikosti 270 mg má vazodilatační účinky a 500 mg této látky denně zlepšuje průtok krve mozkem, jiná analýza naznačuje, že resveratrol nemá statisticky žádný významný vliv na snižování systolického ani diastolického krevního tlaku [7]. Bez dalších studií tedy není možné pacientům s onemocněním srdce cokoli doporučovat.

Diabetes

Studie na laboratorních zvířatech ukázaly, že resveratrol pomáhá také v léčbě obezity, zlepšuje metabolismus glukózy i lipidový profil a pozitivní účinky prokázal také ve spojitosti s hubnutím a zrychlením metabolismu. U některých pacientů resveratrol rovněž napomáhá snižovat hladinu glukózy a zvyšuje citlivost buněk na inzulín. U zdravých jedinců tyto účinky ale nemá [8]. 

Zlepšení paměti

Lidé, kteří konzumují 200 mg resveratrolu denně, vykazují lepší fungování paměti. Vliv má tento přípravek také na učení [10]. Alespoň podle studie, které se zúčastnilo 46 pacientů. Nutno ale podotknout, že co se týče zapomínání naučených informací, není mezi těmi, kteří látku užívali, a těmi, kteří nikoli, žádný významný rozdíl.

Neurodegenerativní onemocnění

Někteří odborníci zdůrazňují, že resveratrol hraje podstatnou roli také při léčbě neurodegenerativních onemocnění. Konkrétně pomáhá zlepšovat funkci mitochondrií u nemocí jako:

Faktem ale zůstává, že studie na lidech hovoří zatím nejednoznačně. Jedna z nich například uvádí, že kombinace piperinu, který se získává extrakcí z černého pepře, a resveratrolu o denní dávce 250 mg zlepšuje u takto nemocných průtok krve mozkem. Zároveň však nedochází k podstatnému zlepšení kognitivních funkcí.

Věkem podmíněná makulární degenerace

Užívání 100 mg resveratrolu denně může výrazně zlepšit obnovu sítnice a zraku, a to v kombinaci s kvercetinem, vitaminem D3, inositol-hexafosfátem (IP-6) a kyselinou ferulovou. První účinky se u některých pacientů projevily už po čtyřech dnech užívání přípravku a přetrvávaly u nich až po celý rok [9]. Samostatné účinky resveratrolu na zrak však potvrzeny nejsou.

Doplňujete nějakým způsobem resveratrol?

Resveratrol a Francouzský paradox

Resveratrol někteří vědci spojují také s takzvaným Francouzským paradoxem. V čem konkrétně spočívá? I přesto, že se ve Francii konzumuje velké množství živočišných tuků a některé zdroje uvádějí, že jsou Francouzi v tomto ohledu jedni z „nejlepších“ na světě, srdeční onemocnění se v této zemi vyskytuje třikrát méně než kdekoli jinde. Část odborníků tento fakt přisuzuje konzumaci červeného vína, které obsahuje vysoké množství resveratrolu.

Podle některých znalců však není resveratrol ve víně to, co dělá nápoj zdraví prospěšným. Po otevření lahve vína látka totiž podléhá velice rychlému působení vzduchu a světla, v důsledku čehož následně mizí. Po napití se do krve dostane jen minimum resveratrolu. Při dávce 25 mg byly v krvi lidí nalezeny pouze stopy této látky. Abychom z vína přijali dostatečné množství resveratrolu, museli bychom denně vypít 200 až 1000 litrů vína.

Dávkování resveratrolu

I přesto, že se resveratrol v trávicím traktu poměrně dobře vstřebává, je také rychle metabolizován, a tak je jeho biologická dostupnost velmi špatná. Míra vstřebatelnosti se navíc u každého jedince liší a závisí na více faktorech, jako je třeba přítomnost dalších potravin v žaludku.

Co se týče doporučené denní dávky, oficiálně čísla neexistují. Obecně se za bezpečnou dávku pro osoby o hmotnosti kolem 70 kg považuje 450 mg denně. Cokoli nad 1 g je naopak spojeno s výskytem nežádoucích účinků.

Resveratrol lze užívat dvěma způsoby, a to buď přírodní cestou, tedy konzumací potravin, které jej obsahují, anebo formou doplňků stravy. Výhodou přírodní formy je, že se v tomto případě nemusíte bát vedlejších účinků, které se mohou objevit při vysokých dávkách. Takové množství resveratrolu z potraviny totiž přirozenou cestou získat nelze.

Co se týče doplňků stravy, tam už jisté riziko hrozí. Kromě nežádoucích účinků představuje nebezpečí také kombinování resveratrolu s některými léky. Před jejich užíváním se proto doporučuje poradit se o tomto kroku s lékařem. Mezi léky, jejichž činnost může resveratrol ovlivnit, patří:

  • antidepresiva, anxiolytika, antiepileptika, jako je: aripiprazol, buspiron či karbamazepin,
  • sartany, blokátory kalciových kanálů: losartan, nimedipin,
  • některé léky na vysoký cholesterol: lomitapid,
  • některé nesteroidní protizánětlivé léky: diklofenak.

Doplňky stravy by pak raději neměly užívat těhotné ani kojící ženy. Zatím totiž neexistuje dostatek informací, které by vliv na nastávající matku a plod řádně popsaly.

Nežádoucí účinky

Při nadměrném užívání resveratrolu se mohou objevit tyto nežádoucí účinky:

U některých jedinců se může objevit také leukopatie, tedy snížení množství bílých krvinek v krvi, či trombocytopenie, což je odborný název pro nedostatek krevních destiček. Vzácně může nadbytečné užívání této látky způsobit selhání ledvin, anebo vykazovat účinky podobné estrogenu, což je dáno podobnou chemickou strukturou s ženských pohlavním hormonem.

Cena Resveratrolu

Pokud jde o to, jaká je u doplňků obsahujících resveratrol cena, ta se liší v závislosti na velikosti balení a značky výrobce. Menší balení po 30 kapslích pořídíte kolem 300 korun, za větší balení nejkvalitnějšího Resveratrolu od premiové značky Life Extension zaplatíte kolem 1200 korun.

Kompletní přehled produktů naleznete na: Produkty Resveratrol.

Prodej Resveratrolu

Resveratrol je k dostání jak v běžných lékárnách, tak i ve specializovaných eshopech. Mezi ověřené patří například UpLife.cz a BrainMarket.cz.

uplfe-orig
brainmarket-orig

Nepravdivá studie

Kromě rozporuplných názorů jednotlivých odborníků či nedostatečných studií na lidech utrpěla pověst resveratrolu také kvůli skandálu ředitele Kardiovaskulárního výzkumného centra University v Connecticutu Dipaka Dase . Vyšlo totiž najevo, že si řadu svých studií, jež hovořily o prospěšnosti resveratrolu, vymyslel. Konkrétně výsledky falšoval celých 7 let a ovlivnil tak více než 100 případů. Ještě předtím, než byla kauza odhalena, stihla jeho práci publikovat celá řada vědeckých časopisů.

Zdroje: cs.medlicker.com, vitalia.cz, znalecvin.cz, znovin.cz, medaprex.cz, pubmed.ncbi.nlm.nih.gov

Maximus (neregistrovaný)
"Důvodem je pravděpodobně kratší doba lisování a tedy i kontaktu mezi slupkou a dužinou plodu." Myslím, že to není úplně přesné tvrzení. Doba lisování je zhruba stejná. Zásadní rozdíl je v tom, že bílé hrozny se lisují ihned, zatímco červená vína se nechávají tzv. ležet na slupkách aby se z nich uvolnilo barvivo do rmutu.
  • 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 »