Žádné nošení, žádné mazlení. Johanna Haarer psala drsné příručky pro budoucí matky

30. 5. 2024

Sdílet

Nakrmit, přebalit, dát do postýlky. Žádné nošení, žádné mazlení, žádné kojení na vyžádání či snad dokonce společné spaní s rodiči. Podobný výchovný přístup byl populární před pár desítkami let i tady a část lidí v něj věří dodnes. Ale možná by je překvapilo, kde se vzal a kdo byl jeho velkou propagátorkou.

Žádná kariéra, žena má být matkou, ale zasloužilou a oceňovanou. Výchova dětí se má nést v přísném duchu, přece z nich nebudou rozmazlenci. Jen ať si hezky popláčou, to je zocelí. A samozřejmě, čím víc dětí, tím lépe. Takový názor zastávala německá lékařka Johanna Haarer. 

Rodačka z Podmokel na Děčínsku psala knihy o výchově dětí, které se velmi líbily představitelům nacismu v Německu mezi válkami. Nacisté si totiž matek nesmírně považovali. 

Johanna Haarer dokonce psala i o tom, jak nejlépe vychovávat děti v nacistickém Německu s podporou hodného strýčka Hitlera, z něhož ještě před válkou udělala dětmi opěvovaného hrdinu. Dnes víme jistě jedno: rozhodně by se nám to nelíbilo a její spisy patří na seznam odsouzeníhodné literatury obdobně jako Hitlerův Mein Kampf. 

Děti se přivazovaly a věšely na zeď. I tak vypadala péče o nejmenší Přečtěte si také:

Děti se přivazovaly a věšely na zeď. I tak vypadala péče o nejmenší

Nacistka Johanna Haarer (1900–1988) to možná původně myslela dobře, ale šlápla hodně vedle. Tato německá lékařka velmi apelovala na správnou péči o ženy v době těhotenství a na ideální výchovu dětí v rodinách, přičemž  neopomněla vyznávat nacistické zásady tehdejší společnosti. Názory oddaně šířila ve své praxi i četných knihách a příručkách, jež napsala.

Stačilo, že byla lékařka

Její matka byla Češka a Johanna byla svého času i občankou Československa. Vystudovala medicínu a provdala se za lékaře Hellmutha Weese, s nímž se už po pár letech rozvedla. Nejprve pracovala jako asistentka pro plicní nemoci v Městském sanatoriu Harlaching v Mnichově, po druhém sňatku s primářem Otto Haarerem a po narození dvojčat jen rok po svatbě se však zcela oddala svému mateřství a péči o děti. Zároveň chtěla tyto předávat jakožto lékařka dále. I když neměla žádné vzdělání v pedagogice a pediatrii, jejím čtenářkám stačilo, že je lékařka a svými sloupky a články v časopisech si je naprosto získala. Z historie víme, že byla hodně populární. 

Který z výchovných stylů je vám nejbližší?

Ne, že by počátkem třicátých let nebyly rady pro rodiče potřeba. Matky a otcové tápali, příručky pro rodiče neexistovaly, kojenecká úmrtnost byla poměrně vysoká – ledacos se přitom dalo zvládnout pomocí hygieny a správné výživy. Jenomže to nebylo všechno, Johanna Haarer k tipům na péči o děti přidávala myšlenky nacistické ideologie.

A právě proto ji podporovali všichni ti, kterým záleželo na tom, aby se nacistická propaganda co nejvíce rozšířila. Jen díky nacistům dostávajícím se k moci se mohla obyčejná doktorka píšící pro ženy stát slavnou. Pod rouškou dobře míněných rad matkám podsouvala zásady tvrdé výchovy v národně socialistickém duchu. Nechyběly ani řádky namířené proti Židům a komunistům. 

Příšerná matka oddaná ideologii

V roce 1934 vydala Johanna Haarer knížku Německá matka a její první dítě, o dva roky později Naše malé děti a v roce 1939 dokonce titul nazvaný Matko, řekni mi o Adolfu Hitlerovi. Vychvalovala árijskou německou rasu, děti naváděla k tomu, aby vstoupily do Hitlerjugend, ženám radila, aby se účastnily výcvikového kurzu Říšských matek, který provozoval Svaz nacistických žen. Lékařka zřejmě věřila tomu, že zrovna tohle je správné. 

Franz Kafka byl nekuřák, abstinent a vegetarián, přesto ho zabila vážná nemoc Přečtěte si také:

Franz Kafka byl nekuřák, abstinent a vegetarián, přesto ho zabila vážná nemoc

Sama měla pět dětí, které v tomto duchu vychovávala. Své názory nikdy nezměnila, a to ani po válce, kdy její manžel spáchal sebevraždu. Sama byla na rok internována, ale jinak ji nečekal žádný postih a dožila se vysokého věku. Její spisy po válce neupadly v zapomnění, ale vydávaly se oproštěny od nacistické ideologie, kdy zůstal jen základ týkající se péče o děti. I když měla zákaz vykonávat lékařské povolání, zůstala až do důchodu ve zdravotnictví. A mezitím psala a radila dál. 

Jak později vypověděly její děti, jako matka stála Johanna za nic. Byla neskutečně tvrdá, násilnická, potomci s ní jenom trpěli. Johanniny dcery po její smrti vydaly životopis, kdy konečně řekly pravdu. Netajily ani to, že Johanna zůstala přesvědčenou nacistkou. Když se její ideály nestaly skutečností, ponechala si je alespoň ve svém srdci. O Třetí říši s ní nikdo nesměl doma mluvit. V pozdějších letech byla závislá na alkoholu a prášcích. 

Prosbám a pláči se neustupovalo

A jaké byly její výchovné názory odpovídající nacistické ideologii? Matka byla na prvním místě ve výchově a péči o dítě. Otci se nepřikládal žádný význam. Role matky byla vyzdvižena vysoko a oceňována, nebyla nijak podřadná. Spočívala v tom, že připravovala dítě na život v nacistickém Německu a měla za úkol z něj vychovat právě takového nadčlověka, jakého podle jejich představ země potřebovala. 

Německá sekta se živila jen kokosy, špatně dopadla. O vychrtlých nahých Evropanech kolují legendy Přečtěte si také:

Německá sekta se živila jen kokosy, špatně dopadla. O vychrtlých nahých Evropanech kolují legendy

Výchova byla tvrdá, děti se nesměly rozmazlovat a musely poslouchat, zocelit se. Zakazoval se nadměrný kontakt matky s dítětem, kojenec se měl nakrmit a pak nechat plakat v postýlce. Ve výchově nebylo místo pro slabost. Prosbám a pláči dětí se ve světě Johanny Haarer nesmělo ustupovat. Jediné pozitivní názory se týkaly prosazování kojení dětí, vyhýbání se alkoholu a cigaretám v těhotenství. 

Na radách Johanny Harret nechyběly ani výzvy k tomu, aby ženy pro děti samy šily, pletly a háčkovaly oblečení nebo každý den připravovaly čerstvou ovocnou šťávu či zeleninové pyré. Místo kupovaného pečiva měly děti dostávat domácí sušenky. Mimochodem, i porod měl probíhat doma. 

Johanna Haarer kupodivu nijak nespěchala na to, aby se děti samostatně naučily chodit na nočník co nejdříve, naopak jim ponechávala prostor, aby nedošlo k jejich fyzické i psychické újmě.

Čím více dětí, tím lépe

Pro spoustu žen muselo být příjemné, že jejich výkon v rodině a domácnosti byl konečně uznán, bylo by iluzorní to popírat, prohlásila Kirsten Heinsohn, historička z Výzkumného centra pro soudobé dějiny v Hamburku. Tehdy to byla součást nacistické ideologie. Ženy se mohly naplno věnovat mateřství a nemusely pracovat, dostávaly také finanční podporu a ocenění za počet narozených dětí. 

Uznání mohlo mít i viditelnou podobu. Matčin kříž byl udělován na veřejných oslavách za čtyři až pět dětí, při počtu osmi dětí zasloužilá matka dostala Zlatý mateřský kříž. Od roku 1933 také existovala manželská půjčka až 1000 říšských marek a právě za každé narozené dítě se část půjčky odpouštěla. Kromě toho německé rodiny dostávaly přídavky na děti a slevy na dani. Podobně si později rodiče zavazoval nejen socialistický režim v Československu.

Galerie: Život dětí v minulosti

Jenomže na druhou stranu, německé ženy, které nesplňovaly podmínky národních socialistů, třeba kvůli nemoci nebo postižení, nesměly mít děti. Sterilizace byla nucená a pro dědičně nemocné ženy platil zákaz sňatků, na což dohlížely speciální soudy. Ve snaze zvýšit počet vhodných dětí pro nacistické Německo byl roku 1935 spuštěn program Lebensborn, jeho zakladatelem byl Heinrich Himmler

Speciálně zřízená místa, například v sanatoriích nebo na zámcích, sloužila k tomu, aby v nich přicházely na svět děti pouze vhodného původu, které mířily k adopci do vhodných rodin. Tyto porodnice byly rozšířeny po celé Evropě, jedna byla například na zámku ve Veltrusech. Nejvíce dětí se takto narodilo v Norsku, kde bylo takových míst hned devět.

A právě i tam se praktikovala stejná forma přístupu k dětem, jakou prosazovala Johanna Haarer. Disciplína, tvrdá výchova, žádné rozmazlování. Vedoucím programu Lebensborn byl Max Sollmann, který byl po válce s dalšími členy sice obviněn norimberským soudem, ale nakonec byli všichni zproštěni viny.

Zdroje: de.wikipedia.org; forum24.cz; wdr.de

Autor článku

Externí redaktorka a copywriterka píšící pro webové i tištěné magazíny. Zaměřuje se na oblast zdraví, historie medicíny, psychologie, filozofie, etikoterapie a alternativní medicíny.

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