Krevní skupina ovlivní váš život. Jen jíst podle ní je nesmysl

8. 3. 2012

Sdílet

Autor: Isifa.cz
Znáte svoji krevní skupinu? Co všechno se z ní dozvíte? Třeba pravděpodobnost rakoviny, žaludečních vředů, infarktu, tloustnutí či otěhotnění. Dieta podle krevních skupin je však mýtus.

Víte, jaká je vaše krevní skupina? Já ano. Mám krev A Rh pozitivní. Označení popisuje molekuly na povrchu mých červených krvinek, označované jako antigeny. V současnosti je podobných molekul známo okolo šesti set a Mezinárodní společnost pro krevní transfuzi rozeznává třicet systémů, podobných systémům AB0 a a Rh +/-. Kde se vzaly, a k čemu jsou, nikdo neví. Je možné, že vznikly z různých důvodů nezávisle na sobě. Nejdůležitější praktický důvod, proč jim věnovat pozornost, jsou transfuze krve, resp. některého z produktů, které se z darované krve oddělují.


Autor: Copyright © 123RF Stock Photos

V laboratoři z vaší krve poznají ledacos

Jedinci s krevní skupinou 0 Rh negativní jsou považováni za univerzální dárce. Skupina AB Rh pozitivní z vás dělá univerzální příjemce. Pravidlo však neplatí ve všech případech a kompatibilita krve dárce a příjemce se musí tak jako tak před transfuzí kontrolovat. Jste-li Rh negativní a zraníte se někde, kde je Rh negativních lidí málo, například ve východní Asii, může nastat problém. Tamní transfuzní stanice by si sice měly Rh negativních dárců, většinou evropského původu, hledět, ale nikdy nemáte jistotu.

Může vaše krevní skupina ovlivnit váš život i v jiné situaci? Ano. Napřed bych ale rád zmínil dva rozšířené mýty o jejím významu: diety podle krevních skupin a jejich souvislost s charakterem.

Dieta podle krevních skupin je mýtus

Najde se dost lidí, kteří věří, že pokud přizpůsobí jídelníček své krevní skupině, zhubnou nebo aspoň budou žít zdravěji. Diety podle krevních skupin vymyslel Američan Peter D'Adamo. Podle jeho názoru má každá z krevních skupin původ v jiné historické epoše, v níž se lidé živili určitým převládajícím typem stravy. Každý typ stravy obsahuje jiné bílkoviny ze skupiny lektinů. Lektiny by měly škodlivým způsobem reagovat s molekulami systému AB0 na povrchu vašich krevních buněk. Podstatou diety je jíst jídla obsahující lektiny hodící se k vaší krevní skupině.

Krevní skupina 0 se měla vyvinout jako první, před třiceti tisíci lety, když byl převažujícím způsobem obživy lov. Lidé, kteří ji mají, by se proto měli živit masem jako pravěcí lovci. Skupina A vznikla před dvaceti tisíci lety, po nástupu zemědělství. Nositelé příslušného antigenu by proto měli jíst spíš stravu rostlinného než živočišného původu. Krevní typ B má být starý deset tisíc let. Přísluší nomádům. Měli by se proto živit podobnou stravou jako Čingischánovo vojsko. Skupina AB je něco mezi prvními dvěma.

Teorie může znít na první poslech logicky, leč není správná. Má tři chyby. Za prvé, lektiny se chovají ke všem krevním skupinám stejně. Za druhé, povrchové molekuly ze systému AB0 jsou starší, než D'Adamo tvrdí. Jsou starší i než lidský druh. Podle různých na sobě nezávislých odhadů se jejich stáří pohybuje mezi šesti až čtyřmi miliony let. Náš druh zdobí povrch zeměkoule zhruba sto až dvě stě tisíc let. Za třetí, D'Adamo nikdy nepodal žádný důkaz o účinnosti své metody. Krevní skupiny s jídlem nesouvisí.

Hledáme zaměstnance. Zn: krevní skupina AB

Molekuly systému AB0 nesouvisí ani s psychickými vlastnostmi. Pokud se vám ten nápad zdá absurdní, vězte, že v Japonsku jde o podobně rozšířenou pověru, jako je u nás astrologie.

Jedinci s různými krevními skupinami by měli mít odlišný temperament a vycházet i odlišným způsobem s lidmi. Myšlenka se objevila na začátku minulého století. Ve dvacátých letech se o ni zajímala i tehdejší Císařská armáda. Na základě víry v psychický význam antigenů AB0 mohou být dodnes například přijímáni zaměstnanci.

Rh faktor a toxoplazma

Jinak než s AB0 je to se systémem Rh. Jeho existence představovala pro biology dlouho hádanku. Systém zahrnuje okolo padesáti různých povrchových molekul. Ta nejdůležitější se jmenuje RhD. Kdo je Rh pozitivní, nese ji na svých červených krvinkách. Rh negativních lidí je u nás okolo šestnácti procent. Když Rh negativní žena čeká dítě s Rh pozitivním mužem, je plod rovněž Rh pozitivní. Minimálně při porodu získá žena proti molekule RhD protilátky. Další Rh pozitivní dítě v jejím lůně je pak v ohrožení života.

Dnes už se situace dá řešit pomocí léků. V minulosti to ale možné nebylo, proto je divné, proč Rh pozitivní lidé dávno nevymřeli. O řešení jste už pravděpodobně slyšeli. Přišel s ním český tým pod vedením Jaroslava Flegra z Přírodovědecké fakulty Univerzity Karlovy. Sám Flegr přiznává, že se nejednalo o záměr, nýbrž šťastnou náhodu. Vědci zkoumali jednobuněčného parazita Toxoplasma gondii. Ten je specializovaný na život v tělech kočkovitých šelem. Často ale omylem končí i v lidech.

Lidský organizmus znamená pro toxoplazmu slepou uličku, protože se v něm nedokáže pohlavně rozmnožovat. Díky našemu úzkému soužití s kočkami je jí však v Česku nakažená necelá třetina populace. Při výzkumu používal Flegrův tým dárce krve a vojáky, jejichž Rh faktor byl znám. Nenakažení Rh negativní jedinci měli v psychologických testech rychlejší reakce než Rh pozitivní. U nakažených se ale situace obrátila. Rh negativní lidé se zhoršili, Rh pozitivní si vedli pořád stejně. Molekula RhD jim pomáhala.


Autor: Isifa.cz

Krevní skupina souvisí se sklonem k některým onemocněním

Jedinci, kteří byli po jednom z rodičů Rh+ a po druhém Rh-, se vlivem nákazy dokonce zlepšili. Výsledek odpovídal padesát let starým výpočtům čínsko-amerického genetika Ching Chun Liho. Ten podle zastoupení Rh faktoru v populaci předpověděl, že právě takoví jedinci musí být nějak zvýhodněni. Nevěděl ale jak. Vyšlo to najevo zhruba tři roky před jeho smrtí v roce 2000.

Další výzkumy vliv toxoplazmy v kombinaci s Rh faktorem potvrdily. Nejzajímavější je analýza nehodovosti vojenských řidičů. Armáda totiž při nástupu základní vojenské služby testovala krev branců na přítomnost parazita. Nakažení Rh negativní vojáci měli oproti nenakaženým dvojnásobnou pravděpodobnost, že se vybourají. Nehodovost Rh pozitivních vojáků parazit nezměnil. Proděláte-li toxoplazmózu, měli byste si pár let při řízení auta a podobných činnostech náročných na postřeh dávat pozor.

Výhodná 0

Zdá se pravděpodobné, že systém AB0 souvisí rovněž s imunitním systémem a s obranou proti parazitům. To je důvod, proč žádný z nich nepřevládne. Stejné molekuly mají na sobě totiž i bakterie. Jedinec s krevní skupinou A nemůže vytvářet protilátky proti bakteriím, které nesou na svém povrchu identické molekuly jako jeho vlastní krvinky. Když přibude v populaci nositelů antigenu A, začne být pro bakterie výhodné se specializovat a zdobit jím své buňky. To zvýhodní antigen B, takže lidí s ním začne přibývat, a tak pořád dokola.

Máte-li krevní skupinu AB, jste proto pravděpodobně náchylnější k bakteriálním infekcím. Skupina 0 vznikla jako poslední (nikoli jako první, jak tvrdí zastánci nauky Petera D'Adama). Je zřejmě výsledkem soužití našich předků s parazity. Její nositelé nemají ani jeden z antigenů A nebo B. Mohou vyrábět oba druhy protilátek. Měli by na tom být nejlépe.

Kromě bakterií pomáhá svým nositelům i v boji s nemocemi způsobovanými většími organizmy, jako je už zmíněná toxoplazmóza nebo malárie. Původce druhé choroby nutí napadené krvinky vystavovat na svém povrchu lepivé molekuly, jejichž pomocí se přichycují ke stěnám vlásečnic. V krvi lidí se skupinou 0 se mu to ale nedaří. To by mohlo souviset i s další výhodou. Lidé s krevní skupinou 0 mají menší šanci, že je postihne infarkt, náhlé přerušení krevního zásobování srdce v důsledku ucpání některé z cév.

Krevní typ 0 je ze statistického hlediska spojen i s nižším výskytem některých typů rakoviny kůžeslinivky. Má ale i své nevýhody. Její ženské nositelky mají podle výsledků jedné studie vyšší hladinu folikulostimulačního hormonu. To je obvykle signál, že brzo vyčerpají zásobu vajíček a nebudou moci počít dítě. Nejdůležitějším faktorem ovlivňujícím šance na otěhotnění však pořád zůstává věk. Lidé s krevním typem 0 jsou také méně odolní vůči bakterii Helicobacter pylori způsobující žaludeční vředy.

Typ B naopak zvyšuje pravděpodobnost rakoviny vaječníků a typ A zase žaludku. Jedná se však o statistické vztahy. Proto nepropadejte panice. Na místě je ovšem vyhnout se dalším činitelům, které zmíněné rakoviny způsobují. Jak vidno, vaše krevní skupina může váš život ovlivnit. To je důvod, proč si ji zjistit. Nedostupnější způsob, jak tu udělat, je přihlásit se na transfuzní stanici ve vašem městě jako dobrovolný dárce krve.

Zdroje:
http://dx.doi.org/10.1002/ijc.25339
http://dx.doi.org/10.1038/ng.429
http://dx.doi.org/10.1073/pnas­.0705390104
http://dx.doi.org/10.1186%2F1471–2334–2–11
http://en.wikipedia.org
http://future.vesmir.cz/ab­strakt/parazit-toxoplasma-a-rh-faktor
http://www.newscientist.com/blog­s/shortsharpscience/2010/10/-normal-0-false-false-3.html

Autor článku

Píše o vědě. Vystudoval ekologii na Univerzitě Karlově v Praze. Momentálně studuje ještě psychologii na Jihočeské univerzitě v Českých Budějovicích, kde i žije. Baví ho čtení, psaní, běhání, kulečník a spánek.

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).
'; document.getElementById('outstream-iframe').onload = function () { setupIframe(); } replayScreen = document.getElementById('iinfoOutstreamReplay'); iinfoOutstreamPosition = document.getElementById('iinfoOutstreamPosition'); outstreamContainer = document.getElementsByClassName('outstream-container')[0]; setupReplayScreen(); } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if ( location.href.indexOf('rejstriky.finance.cz') !== -1 || location.href.indexOf('finance-rejstrik') !== -1 || location.href.indexOf('firmy.euro.cz') !== -1 || location.href.indexOf('euro-rejstrik') !== -1 || location.href.indexOf('/rejstrik/') !== -1 || location.href.indexOf('/rejstrik-firem/') !== -1) { outstreamDirectPlayed = true; soundAllowed = true; iinfoVastUrlIndex = 0; } if (!outstreamDirectPlayed) { console.log('OUTSTREAM direct'); setUpIMA(true); } else { if (soundAllowed) { const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { console.log('OUTSTREAM sound forbidden'); renderBanner(); }); } } else { renderBanner(); } } } function getWrapper() { let articleWrapper = document.querySelector('.rs-outstream-placeholder'); // Outstream Placeholder from RedSys manipulation if (articleWrapper && articleWrapper.style.display !== 'block') { articleWrapper.innerHTML = ""; articleWrapper.style.display = 'block'; } // Don't render OutStream on homepages if (articleWrapper === null) { if (document.querySelector('body.p-index')) { return null; } } if (articleWrapper === null) { articleWrapper = document.getElementById('iinfo-outstream'); } if (articleWrapper === null) { articleWrapper = document.querySelector('.layout-main__content .detail__article p:nth-of-type(6)'); } if (articleWrapper === null) { // Euro, Autobible, Zdravi articleWrapper = document.querySelector('.o-article .o-article__text p:nth-of-type(6)'); } if (articleWrapper === null) { articleWrapper = document.getElementById('sidebar'); } if (!articleWrapper) { console.error("Outstream wrapper of article was not found."); } return articleWrapper; } function setupDimensions() { outstreamWidth = Math.min(iinfoOutstreamPosition.offsetWidth, 480); outstreamHeight = Math.min(iinfoOutstreamPosition.offsetHeight, 320); } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = directVast; console.log('Outstream DIRECT CAMPAING advert: ' + directVast); videoContent.muted = true; videoContent.volume = 0; outstreamDirectPlayed = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = outstreamWidth; // adsRequest.linearAdSlotHeight = outstreamHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function setupReplayScreen() { replayScreen.addEventListener('click', function () { iinfoOutstreamPosition.remove(); iinfoVastUrlIndex = 0; outstreamInit(); }); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(outstreamWidth, outstreamHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } /** * Handles the ad manager loading and sets ad event listeners. * @param { !google.ima.AdsManagerLoadedEvent } adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } /** * Handles actions taken in response to ad events. * @param { !google.ima.AdEvent } adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: // This is the first event sent for an ad - it is possible to // determine whether the ad is a video ad or an overlay. if (!ad.isLinear()) { // Position AdDisplayContainer correctly for overlay. // Use ad.width and ad.height. videoContent.play(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // This event indicates the ad has started - the video player // can adjust the UI, for example display a pause button and // remaining time. if (ad.isLinear()) { // For a linear ad, a timer can be started to poll for // the remaining time. intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstreamLastError === 303) { if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } break; } } /** * Handles ad errors. * @param { !google.ima.AdErrorEvent } adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstreamLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { renderBanner(); } } function renderBanner() { if (isBanner) { console.log('Outstream: Render Banner'); iinfoOutstreamPosition.innerHTML = ""; iinfoOutstreamPosition.style.height = "330px"; iinfoOutstreamPosition.appendChild(bannerDiv); } else { console.log('Outstream: Banner is not set'); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoOutstreamPosition.remove(); outstreamInit(); } else { return false; } adVolume = 1; return true; } /** * Pauses video content and sets up ad UI. */ function onContentPauseRequested() { videoContent.pause(); // This function is where you should setup UI for showing ads (for example, // display ad timer countdown, disable seeking and more.) // setupUIForAds(); } /** * Resumes video content and removes ad UI. */ function onContentResumeRequested() { videoContent.play(); // This function is where you should ensure that your UI is ready // to play content. It is the responsibility of the Publisher to // implement this function when necessary. // setupUIForContent(); } function onActiveView() { if (outstreamContainer) { const containerOffset = outstreamContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstreamPaused) { adsManager.resume(); outstreamPaused = false; } return true; } else { if (!outstreamPaused) { adsManager.pause(); outstreamPaused = true; } } } return false; } let outstreamInitInterval; if (typeof cpexPackage !== "undefined") { outstreamInitInterval = setInterval(tryToInitializeOutstream, 100); } else { const wrapper = getWrapper(); if (wrapper) { let outstreamInitialized = false; window.addEventListener('scroll', () => { if (!outstreamInitialized) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { outstreamInit(); outstreamInitialized = true; } } }); } } function tryToInitializeOutstream() { const wrapper = getWrapper(); if (wrapper) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstreamInitInterval); outstreamInit(); } } } else { clearInterval(outstreamInitInterval); } } }
OSZAR »