Které fobie patří mezi nejznámější? Pacienty trápí hlavně strach z pavouků, výšek nebo špíny

23. 5. 2019 9:00
přidejte názor

Bojíte se smrti, děsí vás číslo 4, máte hrůzu z výšek nebo se absolutně nedokážete pohybovat v blízkosti zrcadel? Pak pravděpodobně trpíte nějakou fobií. Jedná se o psychickou poruchu doprovázenou úzkostí, při které člověk cítí bezdůvodný strach z nějaké jiné osoby, objektu nebo situace. Na světě momentálně existuje více než 500 různých druhů těchto chorobných úzkostí. Podívejte se s námi, které patří mezi ty nejvíce rozšířené. 

Arachnofobie

Pravděpodobně nejrozšířenější a také nejznámější je arachnofobie, což je chorobný strach z pavouků nebo případně i z dalších pavoukovitých tvorů, jako jsou například štíři. Lidé trpící touto fobií cítí silnou úzkost kdekoli, kde by se podle nich mohli vyskytovat pavouci nebo kde jsou viditelné známky jejich přítomnosti (pavučiny).

Jakmile pacienti s arachnofobií vidí pavouka, ochromí je strach a panický šok, nemohou se k němu přiblížit ani ho zneškodnit. Někdy se snaží dostat co nejrychleji pryč nebo vyhledávají vyvýšená místa. Ačkoli velice těžko snáší pohled na fobický podnět, musí mít pavouka raději stále na očích, aby se náhodou neobjevil někde v jejich těsné blízkosti. Zároveň se často cítí poníženě, pokud je v takové situaci někdo vidí.

Kromě arachnofobie existuje také celá řada dalších fobií spojených s různými živými tvory. Celkově se panický strach ze zvířat označuje jako zoofobie. Pokud jde o konkrétní živočichy, velice častý je abnormální strach z hmyzu (entomofobie), z hadů (ofidiofobie), z myší (musofobie) nebo z ryb (ichtyofobie). Ačkoli se to může některým lidem zdát divné, existuje také fobie z koček, psů nebo třeba koní.

Akrofobie

Neopodstatněný chorobný strach z výšek či hloubek se odborně nazývá akrofobie. Pokud se s tímto problémem potýkáte, rozhodně nejste sami. Akrofobie totiž trápí až 10 % světové populace a ženy jsou navíc postiženy dvakrát častěji než muži. Lidé trpící akrofobií typicky zažívají pocity závratě a ve chvíli, kdy dosáhnou kritické výšky, se u nich projeví silné pocity paniky a strachu. Mohou tak ohrozit nejen sebe, ale také své okolí.

Hranice problematické výšky či hloubky může být pro každého pacienta trpícího akrofobií úplně jiná. Některým vadí pouze vysoké věže a budovy, jiní nezvládnou vylézt po žebříku a pro některé je dokonce problém jít nahoru po schodech. Obecně ale platí, že pro tyto pacienty bývá problematické cestovat letadlem, vyrazit na výlet lanovkou, stoupat na vysoké rozhledny, dívat se dolů z balkonu nebo se pohybovat po hřebeni hor.

Tetrafobie

Pro mnoho lidí bude tetrafobie nejspíš naprosto nepochopitelná, jedná se totiž o chorobný strach z čísla 4. Tento problém je rozšířený především v zemích východní Asie, čínské označení pro čtyřku totiž zní velice podobně jako slovo smrt. Proto je v zemích ovlivněných čínskou kulturou zvykem, že při číslování místností lidé raději čtyřku přeskakují a vynechávají také veškeré číslice, které ji obsahují.

Aby toho nebylo málo, podle tradice je nutné vyhnout se jakékoliv reprezentaci čísla 4 v běžném životě, tedy například v telefonních číslech a adresách, na kreditních kartách nebo vizitkách. Rozhodně ho nesmíte zmiňovat ani ve chvíli, když je někdo z rodiny nemocný. Kvůli této fobii se za velice nešťastný den považuje 4. duben a stala se také pravděpodobně důvodem, proč Peking raději stáhl svou kandidaturu na pořadatelství olympijských her v roce 2004.

Tetrafobie ale není jediný strach z čísel, kterým lidé trpí. Kromě toho existuje také chorobný strach z čísla 6 (hexafobie), z čísla 8 (oktofobie) nebo třeba z ďábelského čísla 666 (hexakosioihexekontahexafobie), jež se vyskytuje v Apokalypse. Velice podobná tetrafobii je také triskaidekafobie neboli strach z čísla 13, který je tak rozšířený, že kvůli němu lidé toto číslo v běžném životě také vynechávají.

Coulrofobie

Velice známou a rozšířenou fobií, kterou ve svůj prospěch často využívají tvůrci hororových knih a filmů, je také coulrofobie neboli chorobný strach z klaunů. Ačkoliv tento problém většinou trápí děti, výjimkou nejsou ani případy coulrofobie u dospělých. Původcem přehnaného strachu je většinou nějaká osobní negativní zkušenost s klauny nebo děsivé zobrazení klaunů v televizi.

Klaustrofobie

Mezi nejznámější fobie patří také klaustrofobie neboli chorobný strach z uzavřených nebo nějak omezených prostorů. Nepříjemné fyziologické i psychologické reakce u lidí trpících klaustrofobií vyvolávají především malé a stísněné místnosti, dále také výtahy, tunely, jeskyně, metro, letadla, vlaky, ale také třeba magnetická rezonance. Stejně jako u ostatních fobií není vznik tohoto problému úplně jasný, často se ale projeví u lidí, kteří mají se stísněnými prostory nějakou předchozí zkušenost (například uvíznutí ve výtahu).

Klaustrofobií údajně trpí až 5 % populace a ženy se s tímto problémem potýkají mnohem častěji než muži. Tato choroba se může u některých pacientů projevit pouhými pocity nejistoty, u jiných ale vyvolává silné klaustrofobické záchvaty. Život s ní může být pro člověka velice náročný, protože se jedná o určitý psychický blok. K léčbě slouží především speciální psychoterapie, při které se pacient snaží odvyknout svému panickému strachu pomocí postupného přivykání na pobyt v uzavřených prostorách.

Mysofobie

Máte chorobný strach ze špíny a nečistoty? V tom případě pravděpodobně trpíte mysofobií. Jedná se o poměrně častý problém, který pacientům velice ztěžuje život. Člověk trpící mysofobií má totiž panický strach dotýkat se věcí, na kterých by se mohly vyskytovat jakékoliv bakterie. Neustále si proto myje ruce mýdlem a dalšími dezinfekčními prostředky, předmětů denní potřeby se dotýká pouze prostřednictvím ubrousku či kapesníku a nemůže mít ve svém bytě ani smítko prachu.

Aichmofobie

Další velice známou a rozšířenou fobií je aichmofobie neboli chorobný strach z ostrých předmětů, jako jsou například jehly, nůžky, dráty, ostrá pera nebo také špičaté konce deštníků. Tento strach je pravděpodobně spojený se zážitky z dětství, téměř každý z nás totiž míval hrůzu z odběrů krve, očkování či z toho, že se řízne ostrým nožem.

Lidé trpící aichmofobií se pro jistotu vyhýbají lékařským zákrokům a v případě nutnosti ošetření mohou být velice agresivní, protože cítí přímé ohrožení svého života. Kromě aichmofobie existuje také trypanofobie, což je přímo chorobný strach z injekčních jehel, nebo také hematofobie neboli strach z krve. K překonání těchto fobií se většinou používá behaviorální terapie v kombinaci s léky, které zmírňují úzkost.

Tanatofobie

Jestliže vás trápí chorobný strach ze smrti, jedná se o tanatofobii. Její název pochází z řeckých slov Thanatos (bůh smrti) a phobos (strach). Člověk trpící tanatofobií se většinou děsí vlastního umírání a smrti, často ale může pociťovat hrůzu také ze smrti obecně. Tento iracionální strach bývá spojený s nějakým nepříjemným zážitkem z minulosti, kdy pacient sám těsně unikl smrti nebo viděl umírat někoho blízkého.

Někteří lidé zaměňují tanatofobii s nekrofobií, jedná se však o jiné choroby. Pokud pacient trpí nekrofobií, projevuje se u něj chorobný strach z mrtvol a veškerých věcí, které jsou se smrtí spojené. Pocit hrůzy v něm proto vyvolávají například rakve nebo hřbitovy. Samozřejmě existuje také název pro iracionální strach z oživlých mrtvol, který se označuje jako zombiefobie.

Nomofobie

Mezi chorobné strachy, které se rozšířily až během 21. století, patří také nomofobie. Tento problém, jehož název je zkratkou anglického úsloví „no mobile phobia“, spočívá v závislosti na mobilním telefonu nebo smartphonu. Pacienti trpí absurdním strachem ze ztráty signálu, z nedostatečného pokrytí v odlehlých oblastech, z vybití baterie nebo ze ztráty samotného přístroje. Nejsou schopní svůj telefon vypnout, neustále ho kontrolují, cítí tzv. fantomové vibrace (i když telefon nevibruje) a mají nutkání okamžitě reagovat.

  • Žádné názory
  • Našli jste v článku chybu?
'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
'; document.getElementById('outstream-iframe').onload = function () { setupIframe(); } replayScreen = document.getElementById('iinfoOutstreamReplay'); iinfoOutstreamPosition = document.getElementById('iinfoOutstreamPosition'); outstreamContainer = document.getElementsByClassName('outstream-container')[0]; setupReplayScreen(); } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if ( location.href.indexOf('rejstriky.finance.cz') !== -1 || location.href.indexOf('finance-rejstrik') !== -1 || location.href.indexOf('firmy.euro.cz') !== -1 || location.href.indexOf('euro-rejstrik') !== -1 || location.href.indexOf('/rejstrik/') !== -1 || location.href.indexOf('/rejstrik-firem/') !== -1) { outstreamDirectPlayed = true; soundAllowed = true; iinfoVastUrlIndex = 0; } if (!outstreamDirectPlayed) { console.log('OUTSTREAM direct'); setUpIMA(true); } else { if (soundAllowed) { const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { console.log('OUTSTREAM sound forbidden'); renderBanner(); }); } } else { renderBanner(); } } } function getWrapper() { let articleWrapper = document.querySelector('.rs-outstream-placeholder'); // Outstream Placeholder from RedSys manipulation if (articleWrapper && articleWrapper.style.display !== 'block') { articleWrapper.innerHTML = ""; articleWrapper.style.display = 'block'; } // Don't render OutStream on homepages if (articleWrapper === null) { if (document.querySelector('body.p-index')) { return null; } } if (articleWrapper === null) { articleWrapper = document.getElementById('iinfo-outstream'); } if (articleWrapper === null) { articleWrapper = document.querySelector('.layout-main__content .detail__article p:nth-of-type(6)'); } if (articleWrapper === null) { // Euro, Autobible, Zdravi articleWrapper = document.querySelector('.o-article .o-article__text p:nth-of-type(6)'); } if (articleWrapper === null) { articleWrapper = document.getElementById('sidebar'); } if (!articleWrapper) { console.error("Outstream wrapper of article was not found."); } return articleWrapper; } function setupDimensions() { outstreamWidth = Math.min(iinfoOutstreamPosition.offsetWidth, 480); outstreamHeight = Math.min(iinfoOutstreamPosition.offsetHeight, 320); } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = directVast; console.log('Outstream DIRECT CAMPAING advert: ' + directVast); videoContent.muted = true; videoContent.volume = 0; outstreamDirectPlayed = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = outstreamWidth; // adsRequest.linearAdSlotHeight = outstreamHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function setupReplayScreen() { replayScreen.addEventListener('click', function () { iinfoOutstreamPosition.remove(); iinfoVastUrlIndex = 0; outstreamInit(); }); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(outstreamWidth, outstreamHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } /** * Handles the ad manager loading and sets ad event listeners. * @param { !google.ima.AdsManagerLoadedEvent } adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } /** * Handles actions taken in response to ad events. * @param { !google.ima.AdEvent } adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: // This is the first event sent for an ad - it is possible to // determine whether the ad is a video ad or an overlay. if (!ad.isLinear()) { // Position AdDisplayContainer correctly for overlay. // Use ad.width and ad.height. videoContent.play(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // This event indicates the ad has started - the video player // can adjust the UI, for example display a pause button and // remaining time. if (ad.isLinear()) { // For a linear ad, a timer can be started to poll for // the remaining time. intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstreamLastError === 303) { if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } break; } } /** * Handles ad errors. * @param { !google.ima.AdErrorEvent } adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstreamLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { renderBanner(); } } function renderBanner() { if (isBanner) { console.log('Outstream: Render Banner'); iinfoOutstreamPosition.innerHTML = ""; iinfoOutstreamPosition.style.height = "330px"; iinfoOutstreamPosition.appendChild(bannerDiv); } else { console.log('Outstream: Banner is not set'); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoOutstreamPosition.remove(); outstreamInit(); } else { return false; } adVolume = 1; return true; } /** * Pauses video content and sets up ad UI. */ function onContentPauseRequested() { videoContent.pause(); // This function is where you should setup UI for showing ads (for example, // display ad timer countdown, disable seeking and more.) // setupUIForAds(); } /** * Resumes video content and removes ad UI. */ function onContentResumeRequested() { videoContent.play(); // This function is where you should ensure that your UI is ready // to play content. It is the responsibility of the Publisher to // implement this function when necessary. // setupUIForContent(); } function onActiveView() { if (outstreamContainer) { const containerOffset = outstreamContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstreamPaused) { adsManager.resume(); outstreamPaused = false; } return true; } else { if (!outstreamPaused) { adsManager.pause(); outstreamPaused = true; } } } return false; } let outstreamInitInterval; if (typeof cpexPackage !== "undefined") { outstreamInitInterval = setInterval(tryToInitializeOutstream, 100); } else { const wrapper = getWrapper(); if (wrapper) { let outstreamInitialized = false; window.addEventListener('scroll', () => { if (!outstreamInitialized) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { outstreamInit(); outstreamInitialized = true; } } }); } } function tryToInitializeOutstream() { const wrapper = getWrapper(); if (wrapper) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstreamInitInterval); outstreamInit(); } } } else { clearInterval(outstreamInitInterval); } } }
OSZAR »