Násilnické dítě a co s ním

16. 3. 2016

Sdílet

Představa o dětech – malých nevinných andílcích panovala po staletí. Jako jiné mýty i tento rázně boural Sigmund Freud. Co dělat, když máme doma „andílka s ďáblem v těle“?

V polovině minulého století se zásadním přínosem zapsal do výzkumu dětské agrese i Konrad Lorenz. Sám posléze připustil, že jej ovlivnila světová válka, v níž agrese triumfovala. Koncentrované zlo v agresivitě je údajně výsledek vrozených faktorů. Lze říci, že jsme ji zdědili. Není přesně jasno po kom, neb jen matka je jistá. Na okolnostech vývoje a výchově včetně vhodných podnětů záleží, co s agresivním potenciálem uděláme. Lze jej využít tvořivě – k dobrému. Nebo naopak. Každý může na strádání reagovat jinak. Aktivně, pasivně, regresí k dřívějším formám chování. Může utéci do deprese, ale i k projevům nevole. Podstatné je, že agresi chceme vybít.

Anička mě zbila aneb Agresivní jsou kluci i holky

V úvodu jsme zpochybnili představu dítka coby hodného andílka. Zpochybníme i další mýtus – dívky – andílka agresi neznajícího. Není podstatný rozdíl mezi mírou agresivity u chlapců a děvčat.

Rozdíl – vyšší výskyt agresivity chlapců a mužů – je v případech jednoznačně disharmonických. Tj. u osob označovaných již překonaným názvem psychopatických osobností.

Přečtěte si: 10 druhů psychopatů

Dále se gender liší projevy a zaměřením agresivity. Mužská agresivita je nápadnější a více zaměřená navenek. Ženská je skrytější, častěji se zaměřuje „dovnitř“. Zde se může mj. „somatizovat“ ve smyslu přesvědčení o fatálním dopadu některé fakticky bezvýznamné a nenápadné tělesné nedokonalosti. Ženy mají v souvislosti se stresem a agresí lepší paměť než muži.

Agrese a agresivita není totéž. Agresivita je česky útočnost. Agrese – projev útočnosti může být variabilní. Nás zajímá především varianta dětská. Ta, jež je projevována v předškolním a nižším školním věku. Psychologický slovník konstatuje – pokud druhé děti při hrách ustupují, je tento typ agrese posilován. Pokud si takové chování nedají líbit, má to naopak vliv tlumivý.

Vášničky všeliké

První projevy dětské agresivity namířené proti jiné osobě se objevují před druhým rokem. J. A. Komenský kolem druhého roku dítka zmiňuje „vášničky všeliké“. Trvání ataky je kratší než u dospělých. Objevují se již i „náhradní“ reakce. Například mrzutost, trucovitost, primitivní slovní i pohybový odpor. Není v tom nic ďábelského. Vývoj intelektu i repertoáru sociálních dovedností zákonitě naráží na sociální bariéry v okolí. Nelze si dělat, co chci. Je tu systém sociálních povinností a zákazů.

„Jak lvové bijem o mříže...“ napsal v jiné souvislosti Jan Neruda. Coby dítka netušíme, že je nerozbijeme. Systém „smí se – nesmí se“ není nic příjemného. Mimo jiné je doba předškolní dobou experimentace, který typ agrese je nejúčinnější. Jakým postupem nejlépe dosáhneme svého.

Láska prý prochází žaludkem. Agresivita spíše preferuje jiné části těla. Předškolní dítko může v souvislosti s ní regredovat na nižší úroveň oproti již dříve dosažené laťce toaletního tréninku. Tzv. anální agresivita znamená mimo jiné přinejmenším občasný návrat k pomočování a k pokálení. Výše citované rčení o lásce a žaludku má opodstatnění v občasných záchvatech nechutenství. „Špatně papat“ znamená obrátit na sebe pozornost, získat zájem a mnohého z rodičů vytrestat.

Mohlo by vás zajímat: Může za anorexii máma a za bulimii táta?

Pozoruhodný výzkum naznačuje rozdílnou reakci relativně přísných matek na dětskou agresivitu. Matky, jež jsou na dcery přísné v jejich raném dětství, se takto chovají, i když dcerka roste. Pokud jsou přísné na syna, pak zhruba mezi třemi až šesti lety jeho věku jsou více tolerantní. Je to prý proto, že matce dcera „zůstane navždy“. Proto cítí potřebu ji připravit na to, že ženská role není peříčko. K synovi se prý chová jako k „vojákovi na dovolené“. Na drsný svět mužů jej připravuje vlídností a povolností.

Jisté je, že odměňování agresivního chování – povolnost a maximální vycházení vstříc často krátkodobým přáním dítěte – agresivitu nesnižuje. Spíše naopak.

Takže trestat?

Je-li něco chyba, pak to ještě samo o sobě neznamená, že opak je správný. Trest sděluje, co nedělat. Neříká, co dělat. Zamezí spíše jen zjevným projevům agrese. Naopak podpoří její skryté formy. Vzniká nebezpečí přenosu. Nahromaděný vztek si dotyčný vybije tam, kde si to tzv. může dovolit. Mimochodem šikana mezi spolužáky se objevuje i v mateřských školách.

Existuje i symbolická agresivita projevující se ve hrách, kresbách, ale i v psychosomatických příznacích rozličných onemocnění – od astmatu třeba k neuróze.

Nabízí se jakási zlatá střední cesta. Děti trestat jen zřídka, symbolicky. Dát jim prostor pro sdělení přání. Vycházet jim vstříc. Dítka pak projevují jen menší míru agrese. Nejsou tolik frustrovaná jako ta, jež bývají trestána přísně, nebo naopak ta vystavená lhostejnosti. Učí se odreagovat agresivní napětí sociálně přijatelnou formou. Nejsou tu drsné tresty vyvolávající frustraci. Od toho je jen krůček k novým a novým projevům agresivních tendencí.

Co s tím?

Porůznu roztroušené rady klasika – Zdeňka Matějčka sdělují: Poskytnout dítěti dost pohybu, nechat je odreagovat přirozeným způsobem. U malých dětí vnímat agresivitu jako nezralou formu volání o pomoc. Jako sdělení, že jim něco chybí a s něčím si nevědí rady. Spíše odklánět pozornost od nevhodného chování než jít do střetu. Ten totiž nelze vyhrát. Dbát na přiměřený, stabilní denní režim. Agresivita může mít překvapivě blízko k nevyspalosti, hladu, ale i k nadměrně intenzivním emočním prožitkům.

Shrnul bych to: Přizpůsobit rychlost jízdy stavu vozovky. Dodal bych: Postarat se jim i o jiný program než je sezení u PC.

K tématu: Děti se nerodí líné. Jak rozhýbat malé lenochy?

Má záchvat vzteku? Nejprve se uklidněte vy

Co dělat, pokud dítko propadne záchvatu vzteku? Co zvolit z metody Komafri? Tj. jednat dle Komenského, Makarenka, nebo Frištenského? Začneme odzadu. Zápas, tím méně výprask, není to pravé. Agresivitu to jen podporuje. Domlouvat potomkovi jako Jan Zlatoústý a připadat si přitom jako Makarenko, nebývá úspěšné. Má-li to na počátku přece jen nějaký efekt, časem je menší a menší. Komenského reprezentuje výrok: „Vše ať plyne volně, bez násilí…“ Tj. dát najevo, že dítě není zlé, na projevy agresivity má nárok, neb nic lidského jemu ani nám není cizí. Vyčkat, pokud možno odklonit pozornost.

À propos: Zklidnit především sebe sama. Zkuste: Nádech nosem a slovo nádech. Výdech ústy a slovo výdech. Opakujte desetkrát. Přinejmenším takto nelze přivolat Polednici, neb zaměstnáte hlasivky jinak. Počítáte do deseti a vydýcháte to. Oboje je při zvládání akutního stresu dobrý postup.

Posléze dětem naslouchat, snažit se uspokojovat jejich potřeby, jednat velkoryse, ale znát hranice. Asertivní „ne“ je někdy potřeba. Zařídit věci, aby je dítě udělalo dobře, a pak je zato pochválit… opět citát Zdeňka Matějčka.

Autorova úpěnlivá prosba:

Dámy a pánové, občané obvykle středního či vyššího věku,
v případě, kdy cizí, nezvedené dítko zlobí, ba třeba se i svíjí zlostí, neposkytujte přítomným rodičům nevyžádané rady.  Též se zdržte na adresu dítka vyhrůžek typu: „Dám tě do pytle a zavřu ve sklepě.“ Nenadávejte ani bezradné matce nebo otci. Pokud není dítko prokazatelně ohroženo, je nejlépe volit asertivní techniku selektivního ignorování: nereagovat, nevšímat si…

Místo mentorování si v duchu opakujte: Štěstí je, když děti spí a spotřebiče fungují.“ (Miroslav Plzák)

Autor článku

PhDr. Tomáš Novák – poradenský psycholog, autor řady článků a knižních publikací.

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