Česká jména nejsou jen ta ryze slovanská. Mnoho z nich má latinské, hebrejské či řecké kořeny

2. 12. 2024 7:30
1 nový názor
Autor: Pixabay.com/Leonhard_Niederwimmer

Když se řekne česká jména, mnoho lidí si vybaví třeba Jakuba, Ondřeje, Marii nebo Elišku. Ve skutečnosti nemají slovanský původ, ale vychází třeba z latiny, hebrejštiny či řečtiny. Za nejpopulárnější jména, která dnes dostávají děti v Česku, můžeme označit právě Jakuba a Elišku. Mezi českými jmény pro pejsky se objevují třeba Bertík, Dášenka nebo Piškot, z kočičích jsou populární Micka, Mourek či Čertík.

Výběr českých jmen, které dnes můžete dát svému potomkovi, je skutečně pestrý. Převažují mezi nimi slovanská jména, ale na druhou stranu mnoho lidí nese jména původně latinská, hebrejská, řecká či germánská. Za tradiční česká jména tak považujeme často i taková, která ve skutečnosti nejsou od prvopočátku česká. Typickým příkladem je třeba Ondřej pocházející z řeckého Andreas. Jako staročeská jména jsou často vnímána i taková, která mají hebrejský původ a používají se u nás po staletí. Typickými příklady jsou Jan a Jakub.

Co se dozvíte v článku
  1. Vývoj českých jmen
  2. Nejoblíbenější česká jména pro kluky
  3. Nejoblíbenější česká jména pro holky
  4. Česká jména pro psy
  5. Česká jména pro kočky

Vývoj českých jmen

V historii českých jmen existuje několik významných milníků. Nejstarší česká jména jsou převážně slovanského původu a jsou spojena s magickými představami. Zatímco některá měla podporovat pozitivní vlastnosti, jiná měla dotyčného ochránit před působením negativních sil. S příchodem křesťanství v 9. století se k nám dostala nová slovanská jména, hebrejská jména, řecká jména a latinská jména.

Ve 13. století převládala křesťanská jména, z nichž některá byla vyhrazena jen pro vyšší společenské vrstvy. Patří mezi ně třeba Eliška, Albert či Oldřich. Jitky, Marty a Aleše jste mohli najít mezi měšťanstvem. Významným milníkem bylo také 16. století, kdy prakticky zanikla slovanská jména. Ta se znovu začala používat až koncem 18. století. Jde třeba o jména s koncovkami -slav (Bohuslav, Ladislav, Miloslav), -mír (Vladimír, Lubomír, Jaromír) a -mil (Bohumil, Dalimil, Čechomil).

Za další zlom můžeme označit období kolem roku 1945. Po druhé světové válce se totiž konečně začaly stírat rozdíly mezi jmény související se stavovským či sociálním postavením. Výběr jmen byl ale samozřejmě stále hodně ovlivněný aktuálními trendy. Nejprve nastal odklon od barokních jmen a dávalo se přednost starším jménům, jako jsou Martin, Michal, Tomáš, Jakub, Kateřina, Markéta, Zuzana či Lucie.

Kolem 60. let bylo možné zaznamenat příliv nových francouzských jmen, jako jsou Iveta a Simona. Do popředí se začala dostávat i ruská jména jako Igor, Táňa a Soňa. V současné době se dostávají znovu do módy tradiční jména předávaná z generace na generaci, jako jsou třeba František, Antonín, Anna nebo Marie. [1, 2, 3, 45]

Slovanská jména

Za skutečnou českou klasiku můžete označit slovanská jména, která se v našich končinách začala používat ještě před příchodem křesťanství. Mnohá z těchto jmen se dnes vůbec nepoužívají. Patří mezi ně třeba Dobroš, Chval, Mladota, Vepřoň, Třebava nebo Hněvka. Jiná slovanská jména se používají i v dnešní době. K mužským patří Bohumil, Jaromír, Radoslav, Václav, Dalibor, Zbyněk či Vladislav, z ženských můžeme jmenovat Boženu, Milenu, Vendulu, Radku, Šárku, Libuši či Václavu.

Hebrejská jména

Jména hebrejského původu se u nás začala používat ve velkém s příchodem křesťanství. Mnoho z nich totiž patří mezi biblická, která propůjčují svému nositeli unikátní význam. Mezi oblíbená mužská jména patří Jan, Jakub, Tomáš, Matyáš, Adam, Josef, Michal, Daniel, David či Eliáš. Z dívčích můžeme jmenovat Marii, Annu, Elišku, Ráchel, Martu, Evu či Magdalénu.

Latinská jména

Latinská jména mají sice kořeny ve starověkém Římě, ale po zániku Římské říše se rozšířila více do Evropy. Některá, jako Julie, Viola, Stella, Sebastian, Roman a Oliver, si uchovala svá původní znění. Jiná se natolik změnila, že bychom ani na první pohled nemuseli poznat, že vycházejí z latiny. Patří mezi ně Lukáš, Pavel, Marek, Antonín, Lucie, Klára či Natálie.

Řecká jména

Řecká jména používaná v Česku mají také určitou souvislost s křesťanstvím, protože mnoho z nich se objevuje v Novém zákoně. Není to ale nutné pravidlo, některá totiž odkazují zase na antickou historii a mytologii. Mezi nejpoužívanější česká jména řeckého původu patří Berenika, Denisa, Kateřina, Barbora, Jiří, Ondřej, Filip a Petr.

Germánská jména

Mnohá germánská jména se u nás těší podobné popularitě jako jména slovanská. Často můžete narazit na Karla, Rudolfa, Roberta, Viléma, Adélu či Hedviku. Mezi starogermánská jména patří Jindřich, Oldřich či Bedřich. Germánská jména pochopitelně nejsou jen německá. Z angličtiny vychází třeba Alfréd a Eduard, ze skandinávských jazyků zase Dagmar a Ingrid. [6, 7, 8, 9, 10]

Nejoblíbenější česká jména pro kluky

  1. Jakub,
  2. Matyáš,
  3. Jan,
  4. Adam,
  5. Matěj,
  6. Vojtěch,
  7. Dominik,
  8. David,
  9. Tomáš,
  10. Filip.
Cizí jména dává svým dětem v ČR mnoho rodičů. Oblíbená jsou zejména ta anglosaská
Přečtěte si také:

Cizí jména dává svým dětem v ČR mnoho rodičů. Oblíbená jsou zejména ta anglosaská

Nejoblíbenější česká jména pro holky

  1. Eliška,
  2. Viktorie,
  3. Anna,
  4. Sofie,
  5. Natálie,
  6. Tereza,
  7. Ema,
  8. Adéla,
  9. Amálie,
  10. Julie. [11, 12, 13, 14]

Česká jména pro psy

Obecně se říká, že Češi jsou národem pejskařů. Toto pořekadlo potvrzují i oficiální statistiky, podle kterých najdete v každé třetí domácnosti alespoň jednoho psa. Skutečná čísla ale budou nejspíš ještě vyšší. Milovníci psů tudíž věnují výběru jmen pro své mazlíčky velkou pozornost. Zatímco některým se spíše zamlouvají krátká a jednoduchá anglická jména snadná na výslovnost, jiní nedají dopustit na typicky česká jména pro pejsky.

  • Skutečná česká psí klasika: asi na každé vesnici najdete za plotem nějakého Ferdu, Azora, Astu, Alíka, Bobeše, Žolíka, Pajdu, Bertíka, Žofku nebo Čerta. Pejskům se také často dávají zdrobněliny lidských jmen, jako například Kačka, Bára, Ája, Matýsek nebo Míša.
  • Jména podle psích hrdinů: v českých pohádkách a příbězích figuruje mnoho psích hrdinů, kteří mají ikonická jména. Inspirovat se můžete třeba foxteriérkou Dášenkou, maxipsem Fíkem, neposedným Škubánkem nebo Žerykem.
  • Pojmenování podle jídel: Češi milují dobré jídlo, takže není divu, že mnoho pejskařů pojmenovává své mazlíčky podle oblíbených dobrot. Pejsek se tak může jmenovat třeba Piškot, Keksík, Lentilka, Vanilka nebo Fidorka.
  • Jména odkazující na zbarvení: existuje také mnoho pěkných jmen pro psy, která odkazují na barvu kožíšku. Bílí psi se pojmenovávají Snížek, Perla, Vločka či Sněhurka. K tmavým psům se hodí Čert, Popelka nebo Uhlík. Hnědé a zrzavé jedince lze pojmenovat Kaštan, Karamel, Lišák nebo Jiskra.

Česká jména pro kočky

Při výběru jména pro kočičího parťáka se mnoho lidí nechává inspirovat anglickými jmény, protože jsou krátká, unikátní a snadno se vyslovují. Někdo ale dává přednost české klasice či pojmenuje svou kočičku podle barvy kožíšku.

  • Klasická česká kočičí jména: nejvíce koček se v našich končinách jmenuje Mína, Micka, Amálka, Barunka, Mikeš, Zrzek, Mourek, Bobeš, Tlapka či Fousek.
  • Jména odkazující na pohádkové postavy: majitelé koček se při výběru jména často inspirují pohádkami. Mezi jejich mazlíčky tak najdete třeba Karkulku, Šklíbu, Fionu, Sněhurku, Jasmínu, Šmoulinku, Špagetku, Štaflíka, Lotranda, Otesánka či Rumcajse.
  • Jména vyjadřující osobnost kočky: mezi kočkami se často najdou výrazné osobnosti. Páníčci jim proto vybírají taková jména, která zdůrazní jejich povahové rysy, jako jsou Tygr, Ouško, Čertík, Lord, Lucifer či Dareba.
  • Jména odkazující na zbarvení: podobně jako u psů může jméno kočky odpovídat barvě srsti. K bílým kočkám se hodí Vanilka, Oreo a Milka, k černým Uhlík a Čertík. Mezi mourovatými a strakatými kočkami můžete najít třeba Tlapku, Flíčka, Ponožku, Šmudlu a Mourka. [15, 16, 17, 18, 19]

Zdroje: csu.gov.cz, svscr.cz, rozhlas.cz, demografie.info, theses.cz, muni.cz, evidencekocek.cz, evidencepsu.cz

Kamila (neregistrovaný)

Naše kočka se jmenuje Míša jako medvídek (když jsme si ji přivezli z útulku,tak se valila jako Míša Kulička, teď uz se tak necpe, je spokojená a ohebná ), první byla Máša, byla mourovatá a měla na čele kresbu velkého M, druhá Ťapka. Já mám jméno latinského původu - vznešená obětní služebnice

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