Lednické rybníky a Pálava

11. 9. 2009

Sdílet

Ilustrační obrázek
Autor: Depositphotos – VadimVasenin
Ilustrační obrázek
TIP NA VÝLET – Nejzápadnější výběžky Karpat můžete navštívit pěšky i na kole – Břeclavsko je prošpikované vinařskými cyklostezkami. Vyplatí se vzít s sebou dalekohled.

Z minaretu v zámecké zahradě v Lednici díky němu nahlédnete do největší tuzemské kolonie kvakošů nočních. Na Pálavských vrších zase můžete narazit na rarohy.

Jižní Morava je svět sám pro sebe, příroda je tu úplně jiná než v Čechách. Narazíte tu na zcela jiné živočišné i rostlinné druhy, navíc Pálava svými bílými vápencovými skálami připomíná spíš krasové oblasti na Slovensku.

Výlet k Lednickým rybníkům a na Pálavu lze zvládnout za jediný den, ale ideální je spíš víkend. Pokud zvolíte druhou variantu, nezapomeňte si včas zajistit ubytování. Na Pálavsku totiž bývají penziony obsazené dlouho dopředu.

Zámek a park v anglickém stylu

Lednice, zámek

K Lednickým rybníkům se dá dostat jednoduše jak autem, tak veřejnou dopravou. Ideální je vlak: blízká Břeclav leží na hlavním železničním koridoru, po kterém jezdí každou hodinu vlaky od Prahy i Bratislavy. Většina z nich umožňuje přepravu kol, u vlaků vyšší kvality EC počítejte s povinnou rezervací míst (místenky pro kola je třeba zakoupit minimálně den před jízdou, jinak nebudete mít jistotu, že se s nimi do vlaku dostanete). Z Břeclavi do Lednice se pak dá jet buď motoráčkem, který je sezónní a jezdí od dubna do září, nebo autobusem, který jezdí celoročně. Pokud vezete kola, vyplatí se vyrazit přímo od nádraží po sedm kilometrů dlouhé cyklotrase, která vede podél řeky Dyje přímo na lednické náměstí.

Lednice je centrem mikroregionu Lednicko-valtický areál, který byl před třinácti lety zapsán do seznamu světového přírodního a kulturního dědictví UNESCO. Malé městečko mezi rybníky je známé především díky novogotickému zámku s rozsáhlým parkem, upraveným na anglický způsob. Rybníky jsou v okolí městečka čtyři (Hlohovecký, Prostřední, Mlýnský a Zámecký), a dohromady tvoří Národní přírodní rezervaci. Turisticky nejzajímavější je Zámecký rybník přímo v zámeckém parku. Vede okolo něj upravovaná cesta a na opačné straně rybníka stojí minaret s funkční rozhlednou. Nejde ale o pozůstatek tureckých nájezdníků, minaret nechal vystavět majitel zámku teprve v předminulém století.

SOUTĚŽ: Pošli cyklotrasu a vyhraj nové kolo a spoustu dalších cen!

Až na historickou hranici s Rakouskem

Lednice, Apollonův chrám

Přímo z minaretu se dají sledovat volavčí kolonie na dvou ostrovech Zámeckého rybníka. Hnízdí tu volavka popelavá, ale také mnohem vzácnější kvakoš noční, malá volavka, která ožívá hlavně za soumraku. V okolí rybníka se v posledních letech přemnožili bobři. V areálu jsou k vidění také dravci a sovy – přímo v parku je stálá expozice sokolníků, kteří tu chovají např. všechny druhy sov, které se u nás kdy vyskytovaly. Mezi zvědavé návštěvníky pak pouští ochočené supy.

Součástí lednického zámku je také rozsáhlý skleník a zemědělské muzeum. Prohlídky se platí jednotlivě a zaberou poměrně dost času, takže je nejlepší rozhodnout se jen pro některou. Za pěkného počasí je lepší spíš vyrazit do okolí Lednice a prohlédnout si romantické stavby podél řeky Dyje a u Lednických rybníků, jako je Lovecký zámeček, Apollónův chrám, Rybniční zámeček, Nový dvůr, Hraniční zámeček (právě u něj vedla do roku 1921 hranice mezi tehdejším Československem a Rakouskem, takže například město Valtice bylo do tohoto roku rakouské, a tvořilo dokonce samostatný okres), Chrám Tří Grácií, Janův hrad, Obelisk či Rendes-vous. Kdo chce navštívit všechny tyto stavby, tomu se určitě vyplatí jet na kole, spojuje je turistická značka a cyklotrasa.

Pálava, nebo Pavlovské vrchy?

Pálava, Pavlovské vrchy, balón

Patnáct kilometrů od Lednice směrem na Brno začínají Pavlovské vrchy, často mylně nazývané Pálava. Tenhle název patří celé oblasti ohraničené na jihu Mikulovem a na severu Novomlýnskými nádržemi. Jde o chráněnou krajinnou oblast a biosférickou rezervaci v jednom. Z Lednice se sem dostanete po vedlejší silnici přes Bulhary a Milovice. Opět je možné jet i autobusem, ideálním dopravním prostředkem je ale zase kolo. Vstupní bránou do oblasti je vesnička Pavlov na úpatí Pavlovských vrchů, známé vinařské centrum.

Právě z Pavlova se dá vyrazit po zelené turistické značce prudce do kopce na zříceninu hradu Děvičky. Odtud je nádherný rozhled na dolní a prostřední Novomlýnskou nádrž. Přehrada, která vznikla na řece Dyji začátkem osmdesátých let minulého století, dodnes rozděluje společnost na její zarputilé zastánce i odpůrce. Před její stavbou se tu Dyje každoročně na jaře rozlévala do polí a způsobovala problémy zemědělcům. Zároveň ale vytvořila zajímavý ekosystém, který se stal domovem řady vzácných druhů zvířat i rostlin. Pálavský prales zmizel kvůli komunistickým národohospodářům, kteří chtěli zamezit každoročním povodním, vytvořit cosi jako jihomoravský Balaton a ještě na tom vydělat výrobou elektrické energie.

Plán s moravským Balatonem nevyšel

Nové Mlýny, Dolní Věstonice, Pálava

Ani jeden z plánů se moc nepovedl. Povodně se kraji pod Pálavskými vrchy nevyhýbají, velkou vodu nádrže pojmou jen do určitého objemu. Turistický boom se na Novomlýnských nádržích nekoná, protože přes léto vypadají dost nevábně: kvete tu voda a dno je kamenité, navíc je tu příliš mnoho komárů a všudypřítomný puch z řas, bláta a ryb. Turbíny, které měly vyrábět elektrickou energii, jí vyrobí zhruba tolik, kolik je jí třeba na přečerpávání vody, která prosákla sypanými hrázemi do záchytných kanálů podél nádrží.

Pokud se vydáte z Děviček dále po červené na hřeben Pálavských vrchů, dostanete se přímo na bílé vápencové skály s rozhledem směrem ke Znojmu. Uvidíte před ní Novomlýnskou nádrž i Dyji těsně předtím, než se vlévá do první z tří přehrad. Zhruba po kilometru se dostanete na 549 metrů vysoký vrchol Pálavských vrchů, Děvín. Poznáte ho i podle televizního vysílače, který odtud měl původně kvůli ochraně přírody zmizet, nakonec zde ale zůstává a už se z něj dokonce vysílá i digitálně.

Za Věstonickou venuší

Věstonická Venuše

Po červené se dá sejít z Děvína dolů na luka směrem k Mikulovu (v létě tu je vidět hodně vzácných druhů motýlů, a pokud budete mít štěstí, narazíte i na dravou kudlanku nábožnou) až ke skalní soutěsce, kde je turistický rozcestník. Pokud se chcete vrátit do Pavlova, a máte ještě čas, vydejte se po zelené značce směrem na Horní Věstonice a na dalším rozcestníku se dejte po modré opět na Děvičky. Cesta vede lesní oborou, v níž žijí kozy bezoárové. Na blízkých skalách hnízdí rarozi velcí, ale nesnažte se hledat jejich hnízdo, vykázali by vás ochranáři.

Z Děviček se pak dá jít dolů po červené do Dolních Věstonic, kde je moc pěkné muzeum pravěkých vykopávek a fotografií oblasti předtím, než ji zalila voda Novomlýnských nádrží. Mají tu i kopii slavné Věstonické Venuše. Z Věstonic se do Pavlova dostanete po silnici, a ti buď autobusem, nebo pěšky. Jsou to pouhé tři kilometry. Výlet na Pavlovské vrchy není moc náročný, pokud ale půjdete s dětmi, počítejte s tím, že se v kopcích brzy unaví a budete je muset nést. Návštěva Lednice i Pálavy se sice při troše dobré vůle dá stihnout za jeden den. Je ale lepší, pokud nemůžete zůstat na víkend, když si zvolíte jedno nebo druhé. Na jižní Moravu se přece můžete kdykoli vrátit.

Celková délka: cca 30 kilometrů

Náročnost: středně těžká trasa

Občerstvení: Lednice, Pavlov, Dolní Věstonice

Foto: www.lednice.cz, www.lednicko-valticky-areal.cz, www.balon.cz, http://zs.sudi­ce.indos.cz, http://simonak.eu

Autor článku

Zakladatel serveru Vitalia.cz a jeho šéfredaktor v letech 2008 až 2009

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