Jak trestat děti, aby to bylo účinné?

25. 5. 2009

Sdílet

Ilustrační obrázek
Autor: Depositphotos – VadimVasenin
Ilustrační obrázek
Moje malá dcera se baví zapínáním a vypínáním všech přístrojů v domě. Myčka, televize, rádio, sporák. Její poslední hit je toustovač. Asi to znáte, udržet nervy na uzdě je těžké. Jak správně dítě trestat a kdy, aby to to mělo smysl?

Chcete mít doma andílka, ale v některých chvílích se jen stěží ovládnete, plácnete dítě přes ruku. A pak vás to mrzí. Jak je to vlastně s tresty?

Odborníci nejsou jednotní. Podle některých jsou tresty nutné. Nesprávné tresty ale mohou zanechat hluboké následky na psychice dětí. Tresty, a to i ty fyzické, své opodstatnění mají, pokud jsou ale příliš časté nebo silné, mohou vést až k pokusům o útěk z domova, říká psycholožka Šárka Slabá.

Mně osobně vždy před očima vyvstane obrázek z doby, kdy jsme s rodinou žili v Německu. Tam existuje hnutí maminek, které nosí na tričku nápis „Mé dítě je nedotknutelné“. Viděla jsem jednu z těch maminek, jak z deseticenti­metrové vzdálenosti křičí přímo do obličeje svého asi čtyřletého syna. To nejspíš taky není správně. Takže jak na to?

Děti 1

Trestat vůbec, a za co?

Jaký je vůbec smysl trestu? Někteří rodiče dítě uhodí spíše proto, aby si sami ulevili. To je špatně. Trestu se užívá tam, kde byla překročena nějaká pravidla, je třeba zjednat nápravu či zabránit tomu, aby se podobné chování neopakovalo. (Dítě například na hřišti prudce strčí do cizí ratolesti, nebo mu hodí do očí písek.)

Ke správnému užití trestu je potřeba znát a dodržovat několik pravidel:

  • Dítě musí vědět, proč je trestáno. Trest je přiměřený situaci i věku dítěte.
  • Rodič nesmí trestat v afektu, ze zlosti a v rozčilení. Trest nesmí být ponižující.
  • Trest se vztahuje ke konkrétní situaci, nepokračuje neurčitou dobu.
  • Když už rodiče za něco trestají, musejí být důslední. Jen tak má trest efekt.

Ovšem pozor, ne vždy je potřeba trestat. Pokud dítě něco zavinilo nechtěně nebo se snažilo o dobrou věc a pokazilo ji, je trest kontraproduktivní. Například, když chtělo pomoci mamince zalít květiny a rozlilo vodu, trest si nezaslouží. Tedy platí, že trest se má použít jen v případě, kdy dítě udělá věc, o které od vás už ví, že ji dělat nesmí.

Jak a kdy trestat?

Trest by měl následovat bezprostředně po prohřešku. To je důležité hlavně u menších dětí, aby si uvědomily souvislost mezi překročením hranice a následným postihem.

Existuje několik způsobů, jak dítě potrestat. K nejkontrover­znějším patří nepochybně tresty fyzické. Vede se řada diskusí o tom, zda by vůbec měly ve výchově být. Odborníci ani rodiče nejsou jednotní.

 Fyzické tresty své opodstatnění mají, ale měli bychom je používat spíše jen symbolicky. Potrestáním problém uzavřeme, a dítěti už jeho prohřešky nepřipomínáme. Fyzický trest  je  pro dítě jasné sdělení, že ono samo překročilo mez, říká psycholožka Šárka Slabá.
Obecně přitom platí, že čím je dítě starší, tím lépe se dá trestat i jinými způsoby a tím více je pro něj fyzický trest ponižující.

Hádající děti


Pokud jsou fyzické tresty příliš časté nebo silné, mohou vést k pokusům o útěk z domova, u těchto dětí se vyskytují psychické problémy, může se u nich rozvinout bulimie, anorexie, tendence k sebepoškozování, mohou se zapojit do pochybné party nebo začít užívat drogy. Obecně platí, že trest dopadá na úrodnou půdu jen v citově funkčních vztazích, dodává psycholožka.
A co je tedy snesitelný fyzický trest? Malé dítě můžeme plácnout přes zadeček, ručičku, ale nikdy přes tvář nebo po hlavě, míní Šárka Slabá.

Fyzicky bychom přitom podle ní neměli trestat děti mladší než 12, respektive 18 měsíců, které ještě pořádně nechápou souvislosti mezi svým jednáním a trestem.

Dítě ale můžeme také potrestat psychicky. Dáme dítěti najevo, že se zlobíme. Například tak, že s ním nekomunikujeme. Ale pozor. I tady je potřeba znát míru. Jinak by dítko mohlo získat pocit, že jste ho kvůli tomu, co provedlo, přestali mít rádi.

Zákazy jako trest jsou vhodné hlavně u starších dětí. U starších dětí už bych fyzické tresty nedoporučovala, ztrácejí výchovný efekt, spíše bych zakázala například televizi, počítač nebo strhla kapesné, říká psycholožka. Rozhodně není dobré zakazovat dětem jejich zájmy z oblasti sportu nebo kultury, a správné podle odborníků nejsou ani pracovní tresty (tj. práce za trest). Dítě si tak totiž může zakódovat, že práce je vždy trestem.

Trestat možná, chválit určitě

Když už musíme sáhnout k jakémukoli trestu, mysleme vždy na to, že je třeba v dítěti podporovat i zdravé sebevědomí. Nezapomeňme proto na pochvaly a přistupujme k nim stejně důsledně.
Stále trestané a nechválené dítě může trpět komplexy méněcennosti a nebude si dostatečně věřit. Navíc pozitivní motivací pochvalami přimějete už i ty nejmenší děti dělat to, co je správné (známé jásání nad loužičkou v nočníčku určitě není třeba připomínat).
Pochval by mělo být vždy víc než peskování.

5 tipů jak na to

  • Pravidla dítěti trpělivě vysvětlujte. I když je ještě malé a nemůže zcela pochopit význam všeho, co mu říkáte, od určitého okamžiku si začne význam uvědomovat.
  • Používejte pochvalu. Je to nejlepší způsob, jak přimět už velmi malé děti dodržovat pravidla. Dejte mu jasně najevo, že to, co udělalo, je správné.
  • Pokud dítě poruší pravidla, nenechte se vyvést z míry, dítě by se také rozčílilo a nepoučilo by se. Bez hněvu ale trvejte na svém.
  • Buďte důslední. Pokud zavedete nějaké pravidlo, důsledně vyžadujte jeho plnění.
  • Někdy povolte – například doma se křičet nesmí, ale pokud je dítě na zahrádce rozdováděné, proč by se nemohlo vykřičet tady.

Minitest: Jakou výchovu „razíte“?

1. Jste se svým dítětem na pískovišti. Při zápasu o cizí kyblíček bouchne chlapečka.

a) Plácnete ho a zvýšeným hlasem mu řeknete, že to už nikdy nemá dělat.

  1. Snažíte se mu domluvit, že se to nedělá.
  2. Omluvíte se mamince, že je vaše dítě trochu víc temperamentní.

    2. Jste se známými na společné procházce. Vaše dítě se schválně loudá a po chvíli si postaví hlavu, že dál už nepůjde.

    a) Rozzlobíte se a táhnete ho za sebou.

  3. Řeknete mu, že ostatní už na vás čekají a vy že půjdete za nimi, ať

přijde taky, až bude mít chuť. Pak poodejdete a vyčkáváte za rohem, aby vás neviděl, ale abyste ho měla v dohledu.

  1. Přemlouváte ho, aby šel za ostatními a čekáte, dokud nebude sám chtít jít.

    3. Je večer a čas jít do postele. Vaše dítě si však ještě hraje.

Řeknete mu, aby si uklidilo hračky, došlo si vyčistit zuby a na záchod a pak do postele. Začíná odmlouvat, že ještě ne.

a) Neustoupíte a trváte na svém, případně zvýšíte hlas, abyste dodali váhu svým slovům.

  1. Povolíte 5 minut na to, aby si rychle dohrálo a pak to rychle uklidilo.
  2. Necháte se přesvědčit a doufáte, že později poslechne.

    Odpověď a=1 bod

Odpověď b=2 body
Odpověď c=3 body

3–4 body Autoritativní výchova

První extrém – tato výchova stanoví pravidla, která musí dítě bez výjimky dodržovat. Porušení pravidel se vždy trestá. Podle odborníků je dítě vychovávané tímto způsobem úzkostné. Když se později dostane mimo vliv rodičů, má tendenci mnohem více porušovat pravidla než jeho vrstevníci.

5–7 bodů: Demokratická výchova

Zlatá střední cesta – v tomto přístupu jsou stanoveny rozumné hranice, uvnitř nich mají ale děti volnost. Pravidla se netýkají všech částí života dítěte, ale jsou zaměřeny na podstatné oblasti, například bezpečnost, sebeovládání. Ty jsou vymezovány důsledně, zároveň však s citem na potřeby dítěte i ostatních členů rodiny (rodiče mohou někdy uznat, že je možné udělat výjimku). Při porušení pravidel rodiče spíše vysvětlují než trestají. Důležitá je tedy komunikace a vztahy mezi dítětem a ostatními členy rodiny. Z dítěte se stává psychicky stabilní jedinec, svědomitý a ohleduplný. Je to ideální typ výchovy.

8–9 bodů: Liberální výchova

Druhý extrém – dítě smí všechno. Nemá téměř žádné hranice, dostane všechno, co chce. Dítě bývá v důsledku této výchovy nejisté, neumí překonávat překážky a jít za svým cílem. Nedůvěřuje svým schopnostem, rodiče za něj vždycky všechno zařídí.

Test byl konzultován s psycholožkou.

Autor článku

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