Stres se projeví v obličeji i držení těla

5. 4. 2013

Sdílet

Autor: Isifa.cz
Na první pohled nápadné jsou zátěžové nebo úzkostné reakce v obličeji. Stresový stav výrazně ovlivňuje i držení celého těla. „Hromádka neštěstí“ ani „zkamenělý hrůzou“ nejsou v pohodě.

Slovo stres je odvozeno z latiny, pochází ze slova „stringere“, tj. těžce táhnout. Termín stres je znám od druhé poloviny dvacátých let minulého století. První jej použil student pražské německé university původem z Komárna Hans Selye (1907–1982). Všiml si, že rozličné negativní podněty vyvolávají velmi podobné „stresové“ reakce.


Autor: Isifa.cz

Projevů stresu je nepočítaně. Na první pohled nápadné jsou zátěžové nebo úzkostné reakce v obličeji.

Pro někoho je stres dopad těžké situace (např. nezaměstnanost, rozvod, dluhy).  Jiný má na mysli jeden fyzický podnět – stresor, např. vydýchaný vzduch nebo horko v místnosti. Může jít i o např. na silnou bolest po úraze. Stresem je málo podnětů i jejich přemíra. Je jím nuda i napětí.

K tématu: Psychickou zátěží jsou tragédie, ale i úspěchy

Vztahové peklo

Stresor je podnět spouštějící stresovou reakci. To může být jakákoliv náročná změna jak uvnitř, tak i vně organismu. Snižuje subjektivní schopnost kontroly v různých oblastech, včetně výrazu obličeje a postoje člověka. První definice stavů, jež by bylo možno považovat za důsledky stresu, jsou popsány již ze staré Číny.

Stresorem jsou špatné mezilidské vztahy. Vyhraněně tzv. mobbing a bossing v zaměstnání. Velmi intenzivní je stres v souvislosti s nepovedenými rodinnými vazbami. I se sousedy může vzniknout málem vztahové stresové peklo.

Člověk v dávných dobách mohl na případné nebezpečí reagovat pouze bojem či útěkem. Obě reakce byly náročné na fyzický výkon. Tím mimo jiné nabízely jakési „odreagování“, vybití agresivity až do únavy. Dnes je nutno agresivitu zvládnout, boj není „cool“ a útěk není asertivní.

Stres – koření života. Nepřesolovat

„Stres v žádném případě nemusí být pouze škodlivý,“ řekl Hans Selye, „je zároveň kořením života, neboť každé hnutí mysli a každá činnost zapříčiňuje stres. Stejný stres, po kterém jeden člověk onemocní, může znamenat pro druhého životodárné uzdravení… Úplné osvobození od stresu znamená smrt.“

Zcela normální je tzv. eustres. Tj. běžné napětí, zvládání překážek. Sem patří i stav mírné trémy. Zvyšuje výkon a psychickou kondici neohrozí.

Přečtěte si: 10 kroků pro zvládnutí trémy

Drastický stres související s nezvládnutelnou situací je tzv. distres. Např. mírná tréma může nabudit optimální výkon, v rámci výrazného stresu jde ale již o trému výkon blokující. Hodnocení, jak je uvedeno i v citátu, je individuální. Pro někoho je hádka banalita, pro jiného může znamenat tragédii.

Akutní stres je nárazový zážitek. Někdy je prezentován jako šok. Např. na silnicích umírá víc lidí v důsledku šoku než vlastního zranění.

Velmi záludné bývají posttraumatické stresové reakce. Jak název říká, je to stres v důsledku třeba i dávno minulého stresového prožitku.

Typické projevy jsou úzkosti, deprese, podrážděnost, snížené sebevědomí, obavy z budoucnosti. Výrazně se objevoval namátkou u uprchlíků z bývalé Jugoslávie. Např. jako reakce na náhodně zaslechnutý zvuk letícího letadla nebo „výstřel“z výfuku auta.

Střelba je nerozhodila. Až nákup rohlíků

Ne snad vše, ale mnohé je relativní. Někteří z bosenských mužů v době války v Sarajevu např. zvládli plazit se pro vodu po ostřelované cestě a přinést ji zpět do úkrytu. To vše bez zjevných projevů stresu. Výrazné stresové projevy se u nich objevily až v bezpečí českého humanitárního střediska. Složitost gender vzorců ilustruje následující: Muži, kteří vcelku samozřejmě riskovali život cestou (své rodině) pro vodu, nebyli ochotni zajít v onom středisku (své rodině) pro rohlíky.

Coby externí psycholog onoho střediska jsem opakovaně žasnul nad poměrně výrazným stresem souvisejícím s pro české muže banálním úkolem: zajít do samoobsluhy pro běžný nákup a ten přinést do místa ubytování v igelitové tašce. Nešlo primárně o lenost. Považovali to za záležitost urážlivou, vyvolávající stres z pocitu ponížení a ztráty mužské role. Nemohou přece vykonávat „ženskou práci“. Platilo to, i když manželka byla zaneprázdněna jinak a denní náplní mužů bylo popíjet kávu, kouřit a klábosit.

Do jisté míry tragikomicky působí také gender ovlivněný popis subjektivně závažné stresové reakce českého muže, novopečeného důchodce. Bolela ho záda a lékař mu zakázal nosit těžké věci. Dcera mu na nákup vnutila kabelu na kolečkách. Tlačit ji „tam a zpět“ bylo pro něj utrpení. Proč? Vysvětlil: „S takovou hrůzou chodí nakupovat jen staré báby…“ 

Bóže, co nás ještě čeká

Opomenout nelze anticipační stres. Jde o obavy z toho, co nastane v budoucnu. Např. čekání na to, zda „přijdu o práci nebo ne“, je mnohdy horší než třeba i smutná jistota. Na děti velmi negativně působí sdělení: „Jen počkej, až přijde táta, ten si to s tebou vyřídí.“ Zvažování, zda jít k zubaři, může vyvolat větší stres než sám lékařský zákrok.

Čtěte dále: Dg: Nezaměstnanost

Měření míry stresu

Zde bývají používány tabulky subjektivní závažnosti životních událostí. Každá z uvedených má přiřazen určitý počet bodů. Získané body za jednotlivé události bývají sečteny – výsledek nad 200 bodů „získaných“ za rok je považován za pro zachování duševní rovnováhy velmi riskantní. Nejznámější, nejčastěji užívaný a dnes již poněkud zastaralý je postup podle Holmese a Raheho z roku 1967 (zde: Psychickou zátěží jsou tragédie, ale i úspěchy).

Z dostupných je nejmladší americká Škála stresových událostí u vysokoškoláků podle Rennera a Mackina z roku 1998:


Autor: Vitalia.cz

Jak tělo reaguje na stres

Projevů a souvislostí stresu je nepočítaně. Zmíním se jen o několika z nich, jež jsou „v první linii“. Tj. i pro laika jsou zjevné ihned po expozici podnětu vyvolávajícího stres.

Na první pohled nápadné jsou „zátěžové“ nebo úzkostné reakce v obličeji. Čtenářům, kteří mají cestu do Brna, nabízí ilustraci dům „U čtyř mamlasů“ v samém středu města, na náměstí Svobody č. 4 (brnoweb.webnode.cz/zajimava-mista/dum-u-ctyr-mamlasu). Ve skutečnosti jej zdobí sochy bájných Atlasů. Tj. balkony podpírají stylizovaní obři, kteří na svých ramenou dle mytologie nesou nebeskou klenbu. Stačí pohlédnout do jejich ztrhaných, napjatých kamenných obličejů a je zjevné, jaký to mají těžký úděl.

Zmíněný stresový stav výrazně ovlivňuje držení celého těla. Dále citovaná lidová rčení to dokládají.

Jako by do něj hrom bacil

Úlekový reflex je vrozený, nepodmíněný reflex. Matka příroda nám jej nadělila coby připomínku i formu odpovědi na nečekaný, neobvyklý podnět. Nejčastěji na zvládání náhlého, krátce trvajícího nebezpečí. Tento reflex umožňuje okamžitě zaměřit pozornost novým směrem. Zvyšuje vnímavost organismu a tím jej chrání, protože mu umožňuje zjistit, co se děje uvnitř i vně.

Úlekový reflex (podle Keleman, S.,: Anatomie emocí: struktury lidské zkušenosti, Praha, Portál, 2005) vyvolává změnu ve svalech a postoji těla. To se projevuje změnou tvaru bránice, zesílením a následně oslabením tělesných stěn, zvýraznění oddělenosti tělesných dutin, narušením rovnováhy těla, změnou pocitů, emocí a myšlení.

Úlekový reflex má dle zmíněného autora šest stadií:

  1. pátrání a ostražitost
  2. napětí a nelibost
  3. strnulost, odpor, strach
  4. vyztužení a křečovitost
  5. ústup a podrobení se
  6. kolaps, rezignace

Děláme ramena a zadek máme stažený hrůzou 

Tělo se při úleku napřímí a napne. Je připraveno ke klasické „starodávné“ reakci na stres: na boj nebo na útěk. Roste svalový tonus, zejména horní poloviny těla. Hrudní dutina se rozpíná kontrakcí mezižeberních nádechových svalů, zatímco pánevní a břišní dutina se stahuje Lidově řečeno „děláme ramena a„zadek máme stažený strachem“. Pokud není stresová reakce zvládnuta,hrudník se zužuje (propadá).

Zkameněl hrůzou

Rčení vystihuje stav zvaný Moorův reflex. Jde o velmi prudký typ úlekového reflexu, běžný je u novorozenců. Když dítko cítí, že padá, případně ztrácí rovnováhu, symetricky rozhodí ručky i nožky. Moorův reflex trvá krátce, při narození ho mají všechny děti a vysoké procento z nich ho má ještě v šesti týdnech věku. Reflex je provázen pláčem, postupně slábne a do čtyř měsíců může úplně vymizet. Nabádá rodiče k větší opatrnosti a jemnosti při zacházení s miminkem.

Něco obdobného se může objevit i u dospělého v extrémních podmínkách. Jde o strnulost celého těla. Metabolismus se zpomalí. „Není nám do skoku“. Svaly i všechny tělesné dutiny se okamžitě smrští. Postavení hrudníku odpovídá výdechu. Mohou se objevit mdloby.

Jako by spolknul pravítko

Rčení vystihuje tzv. rigidní držení těla. To souvisí s útočností, dominancí, ale někdy i s překonáváním úzkostnosti. Může být i nacvičeno. Někdy bývalo popisováno jako „postoj z pruské kadetky“. V souvislosti s ním se objevuje i potlačování emočních projevů –„je to suchar“. 

Solný sloup

Rigidita přechází do napjaté strnulosti, pohled je neurčitý nebo upřený do země. Dotyčný buď „nemá slov“ nebo mluví nezřetelně a tiše. Jde o tzv. zlý sen trenérů asertivity. Tj. opak přiměřeného sebeprosazení.

Nafoukl se jako holub na báni

Odborně řečeno lze mluvit o „zbytnělé struktuře“. Jde o jeden z projevů pokusu o únik z reality. Souvisí s tzv. uražením se. Znamená i neschopnost přiměřené komunikace s okolím a neochotu přijmout požadavky a výzvy od druhých.

Celý se propadnul do sebe

Odborně jde o „zkolabované držení těla“. Člověk je rezignovaně ponořený sám do sebe. Svalstvo je oslabené, „jako by se celý propadal“. Záda jsou shrbená, pohled upřený k zemi. Sebevědomí na nule.

Nehrb se…

…nabádají starostliví rodiče své potomky. Ne vždy si uvědomují skutečnost mnohokrát zmíněnou v odborné literatuře: Přirozeně vzpřímené držení těla předpokládá emocionální rovnováhu jedince.

Účastníků kursů asertivity se ptávám: Co vám často říkali rodiče, když jste byli malí? Odpověď „Nehrb se!“ byla zejména u žen často doprovázena varujícími a podceňujícími výroky typu: „Ne ať nám uděláš ostudu, s každým musíš umět vyjít, moc si o sobě děvenko nemysli.“ Obdobná moudra „hrbí“ sebevědomí.

Postoj i citlivost k jednotlivým stresovým událostem je záležitost individuální. Jedna z cest, jak ji zvýšit, radí: Vypnout hruď, hlavu vzhůru a jde se dál. Nemohu zaručit, zda to pomůže. Jist jsem si v tom, že za pokus to stojí.

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 »