Kdo to kdy slyšel? Bio z Číny?

Sdílet

Ilustrační obrázek
Autor: Depositphotos – VadimVasenin
Ilustrační obrázek
Na mnoha biopotravinách najdete nálepku: Made in China. Je kvalita srovnatelná s tuzemskými potravinami? A proč se k nám vůbec slunečnicová semínka vozí z Číny, když máme vlastní?

Celosvětový trh je plný výrobků z Číny. Oblečení, elektronika, ale i potraviny nesou označení Made in China. Nebudeme si lhát, v procesu výroby se hledí na cenu a často zapomíná na kvalitu.


Autor: Photl.com

I pohanka se k nám dováží z Číny

Na základě těchto zkušeností pak logicky vyvstává otázka, jestli potraviny nesoucí nálepku bio a pocházející z Číny, mohou být kvalitní. Je bio ze zemí s pošramocenou pověstí ohledně kvality své produkce na stejné úrovni jako například to tuzemské? Není putování bio produktů přes půl světa popřením ekologického smýšlení? Ono totiž cestování jakýchkoliv výrobků má vcelku významný dopad na životní prostředí. Přesvědčíte se. Zeptala jsem se bio prodejců v Česku i v Německu, jestli a proč bio z Číny nabízejí. Zapátrala jsem po certifikačních úřadech, které povolují zahraniční bio na náš trh a v neposlední řadě dostane slovo také Svaz ekologických zemědělců PRO-BIO a Ministerstvo zemědělství.

Čtěte také: Jsou biopotraviny lepší?

V čem je bio lepší než konvenční produkt?

Bio je doporučováno především proto, že neobsahuje chemická aditiva, konzervanty, stabilizátory a umělá barviva. Tedy určitě ne v množství, které je běžné pro výrobky bez označení bio. Příkladně v klasických potravinách je povoleno používat asi tři sta dvacet přídatných látek, u biopotravin se jedná o pětapadesát. Na základě toho má ekologicky vypěstovaná zelenina o 50 % nižší obsah dusičnanů a o více než 90 % nižší obsah pesticidů v porovnání s běžnou zeleninou. Jakkoliv se to může zdát pro nesmlouvavé konzumenty ekologicky pěstovaného jídla donebevolající, některá aditiva včetně éček se i v bio výrobcích mohou vyskytovat. A to zcela legálně.

Takhle to chodí s českými bio produkty, jenže náš trh rozhodně není a ani nemůže být plně pokrytý pouze z tuzemských plodin. Plantáže s čajem nebo mokřady s rýží pod Řípem prostě nemáme, dovážet musíme i buráky či zázvor. To jsou další z produktů, které téměř jinde než v Číně nerostou. Dovážejí se i bio jáhly, na český trh je pod svojí hlavičkou dodává německý bio gigant Alnatura. Jak zajišťuje bio kvalitu těchto výrobků, jsme se zeptali přímo v centrále společnost v německém Bickenbachu: „Organické produkty, které jsou dováženy do Evropské unie ze třetích zemí, musí splňovat požadavky nařízení EG-Öko-Verordnung. To znamená, že výrobky musí být vyráběny podle stejných pravidel jako v EU a musí být sledovány v souladu se stejným kontrolním postupem. Následně tyto produkty sami analyzujeme,“ vysvětluje Stefanie Neumann z tiskového oddělení Alnatury.

Dále čtěte: A kup nějakou rýži!

Dovážíme bio, u nás už se skoro nepěstuje

Středoevropské pásmo není příliš vstřícné k teplomilným rostlinám, takže buráky vedle jahod u nás nikdy nevypěstujeme. Smutnější je však to, že se k nám dováží v bio kvalitě i plodiny, které si z tuzemských polí ještě dobře pamatujeme: „V malém se u nás pěstují prakticky všechny plodiny, ale pro zpracování ve velkém to je zhruba už jen šest plodin. I některé dříve běžné plodiny, jako například proso, pohanka či len se u nás už ekologicky prakticky nepěstují. Nebo neexistují zařízení na jejich zpracování,“ prozrazuje Lubomíra Chlumská z bio společnosti Countrylife.cz. Jednou z těch šesti je i slunečnice. V bio kvalitě se sice u nás pěstuje, ale buď nedokáže vykrýt poptávku spotřebitelů, nebo je moc drahá. Dováží se k nám z různých koutů světa. Zajímavé je například srovnání slunečnicových semínek původem z Číny, prodávaných pod českou hlavičkou Countrylife: 100 g stojí 12 Kč. Naproti tomu 100 g českých semínek pod hlavičkou Lifefood  vyjde na 26 Kč.

Dále čtěte: O biomléko je u nás malý zájem. Pojede do Německa

Těžko soudit, jak může být čínské slunečnicové semínko putující k nám přes osm tisíc kilometrů levnější než identický produkt vypěstovaný za humny. Podstatná by ale v tomto ohledu neměla být cena. Ten, kdo vybírá bio, hledí přece na ekologii jako celek. „Důraz by měl být kladen především na to, aby potraviny pocházely z co nejmenší vzdálenosti a byly tedy z České republiky nebo ještě lépe z konkrétního regionu. Ideální volbou pro spotřebitele jsou tak místní potraviny, nejlépe v bio kvalitě, protože ve srovnání s konvenčními potravinami nezatěžují krajinu pesticidy, herbicidy či umělými hnojivy. Zvířata z ekologických chovů žijí v důstojných podmínkách a při přepravě produktu nebyla vyprodukována kvanta skleníkových plynů ze spotřebované nafty,“ vyslovila důvody pro biovolbu Petra ŠvambergerováHnutí Duha.

Přečtěte si také: Bio kuřecí: Cesta masa od kuřátka po pečínku

Žít bio a sypat si k snídani müsli z Číny a k obědu si dát bio kaši dovezenou z Turecka, to je jak zbytečně propálit vrchovatý uhlák za parného letního dne. Na uhlíkové kalkulačce hnutí Duha si můžete spočítat, kolik CO2 se vypustí do ovzduší jen proto, že si necháváme dovážet místně dostupné plodiny až z druhé strany světa (bez ohledu na bio kvalitu).

Kdo kontroluje kvalitu zahraničních biopotravin?

Ze satelitních snímků je patrné, jak naše země v létě zlátne. Řepka čím dál víc vytlačuje z polí obiloviny, které bychom pro vlastní užitek mohli dále zpracovávat. Ale to my si je raději přivezeme, třeba z Turecka, Číny nebo Maďarska. Když už holt jsme v této fázi, je tedy třeba zaměřit se na kvalitu, která k nám z různých koutů světa míří. Jak nám napsal Jan Žáček z Ministerstva zemědělství: „Biopotraviny vyprodukované v zahraničí podléhají speciální kontrole a certifikaci. Pokud mají být dovezeny do členských zemí EU, musí být vyprodukovány podle evropských předpisů pro potraviny.“ 

Přečtěte si také: Jak vzniká bio hovězí: Cesta masa od býka po steak

Každý, kdo chce u nás prodávat produkty s nálepkou bio, se musí zaregistrovat u certifikačních společností ABCDERT AG, Biokont s.r.o. nebo KEZ o.p.s.

Kateřina Nesrstová ze Svazu ekologických zemědělců PRO-BIO nám sdělila: „Inspektoři kontrolních organizaci provádějí pravidelné i namátkové kontroly jak na ekofarmách, u zpracovatelů potravin, tak u velkoobchodníků s biopotravinami. Minimálně jednou ročně tak projde celý řetězec výroby, zpracování a distribuce kompletní kontrolou.“ Kdo tuto kontrolu zajišťuje? Asi nelze počítat s tím, že si jednou ročně pracovníci KEZu udělají výlet do Číny a dalších zemí, které k nám dovážejí své bio výrobky, a provedou tam kontrolu. Zde se musí jedna organizace spoléhat na druhou a druhá na třetí a třetí… Potvrdil nám to Daniel Stříteský z kontroly ekologického zemědělství, KEZ o.p.s.: „Do EU mohou být dováženy produkty ze zemí, kde působí kontrolní organizace poskytující rovnocenné záruky ve smyslu kontroly plnění evropských požadavků na ekologickou produkci. V tomto režimu mohou být např. dovezeny určité kategorie produktů z Číny, neboť i zde působí několik uznaných kontrolních organizací.“ 

Čtěte dále: Z čeho se vyrábí olej v Číně? Ze splašků!

Mnoho zemí, řada inspekcí, spousta zainteresovaných lidí, to je řetěz, který by neměl mít vadu. Už teď ale mohou mezi lidmi panovat pochybnosti, které hodlá vyvrátit připravovaná změna v české legislativě. „Ve spolupráci s Ministerstvem zemědělství připravujeme změnu a to, že od 1.1. 2014 se budou moci grafickým znakem „biozebra“ označovat pouze české biopotraviny. Uvidí-li tedy po 1. 1. 2014 zákazník biozebru, může si být jistý, že značí české bio – vyprodukované i zpracované v ČR,“ prozradila nám novinku Kateřina Nesrstová ze svazu PRO-BIO.

Autor článku

Redaktorka serveru Vitalia.cz se zaměřuje zejména na kvalitu potravin a kvalitu jejich prodeje. Věnuje se také zdravotní problematice.

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