Svědění hlavy svádí ke škrábání, hrozí infekce. Může jít o systémovou chorobu

15. 8. 2024

Sdílet

Autor: Depositphotos/1odinmig.gmail.com
Suchá a svědivá pokožka hlavy může být velice frustrující, protože škrábání nepřináší úlevu, ale zpravidla se tím problém ještě více prohloubí. Tyto nepříjemné pocity mohou souviset s banálními příčinami, jako jsou lupy, nevhodné kosmetické přípravky či dehydratace. Někdy ale vyplývají ze systémových kožních chorob, které mívají chronický průběh. U malých pacientů mohou být příčinou vši.

Co způsobuje svědění pokožky hlavy?

Co se dozvíte v článku
  1. Co způsobuje svědění pokožky hlavy?
  2. Časté příčiny svědění hlavy
  3. Příčiny vycházející z kožních onemocnění
  4. Další příčiny svědění pokožky hlavy
  5. Svědění hlavy u dětí
  6. Jak se zbavit svědění hlavy?

Svědění hlavy a vlasové pokožky se čas od času objeví u každého. Pokud ale pociťujete svědění pravidelně a problém se neustále prohlubuje, pravděpodobně jde o závažnější příčinu. Svědivá kůže bývá suchá, pokrytá šupinkami odumřelé kůže a začervenalá. Člověk navíc pociťuje potřebu poškrábat si svědivá místa, čímž se pokožka ještě více podráždí. Ze zdánlivě banálního problému se pak stává začarovaný kruh, zejména pokud je pokožka hlavy postižena chronickým kožním onemocněním.

Příliš časté a hrubé škrábání může pokožku poškodit, takže začne krvácet. Kůže je pak pokryta nevzhlednými strupy a může se do ní snadno dostat infekce. Chronické kožní problémy pak mohou vyústit ve vypadávání vlasů i závažnější problémy, proto by se měly začít včas řešit.

Časté příčiny svědění hlavy

  • Suchá pokožka: někteří lidé mají přirozeně velice suchou kůži. Vlhkost se z pokožky ztrácí i vlivem stárnutí, takže je běžné, že mají starší lidé vysušenou pokožku. Dehydratace může souviset také s nedostatečným pitným režimem.
  • Lupy: částečky odumřelé kůže nepředstavují problém pouze po estetické stránce, ale vyvolávají i nepříjemné pocity. Lupy se shlukují do plaků a vytvářejí nepříjemně svědivá ložiska, což svádí ke škrábání. Kůže bývá zarudlá a může se snadno zanítit.
  • Alergická reakce: některé kosmetické přípravky mohou způsobit alergickou reakci, pokud přijdou do kontaktu s pokožkou. V praxi se jedná hlavně o parafenyldiamin, který se nachází v tmavých barvách na vlasy a henně. Proto se doporučuje vyzkoušet barvu nejprve na malé ploše kůže, než ji aplikujete na vlasy.
  • Nevyhovující kosmetické přípravky: k podráždění pokožky mohou přispívat některé typy šamponů, které ji příliš vysušují a mají nešetrné složení. Přehánět by se to nemělo ani se stylingovými přípravky.
  • Nevhodná péče o vlasy: svědění hlavy může způsobit špatně opláchnutý šampon, špinavý hřeben či každodenní fénování horkým vzduchem. Vlasové pokožce rozhodně neprospívá ani příliš časté mytí. Pokud si myjete vlasy každý den, zbavujete pokožku přirozeného ochranného filmu. Ten se pak nestíhá obnovovat a kůže se stává vysušenou a podrážděnou. Podobně funguje i horká voda. [1, 2, 3, 4, 5, 6]
Bojíte se, že si z cest přivezete šváby? Dejte pozor na jídlo a případně volejte odborníky Přečtěte si také:

Bojíte se, že si z cest přivezete šváby? Dejte pozor na jídlo a případně volejte odborníky

Příčiny vycházející z kožních onemocnění

  • Kvasinkové infekce: plísňové infekce pokožky hlavy se projevují urputným svěděním, červenými skvrnami a vznikem šupinatých hrbolků. Infekce proniká hluboko do vlasových folikulů a způsobuje jejich poškození. Vlasy kvůli tomu vypadávají a na hlavě vznikají holá místa. Dermatofytózu je nutné léčit speciálními antifungálními šampony.
  • Seboroická dermatitida: seborea je neinfekční chronické onemocnění. Dochází při něm k nadměrné tvorbě kožního mazu, na kterou navazuje přemnožení kvasinky rodu Mallasezia. Typickým příznakem jsou zarudlé, žlutavé až oranžové mastné šupinky, které vytvářejí nánosy ve vlasech, na obličeji, kolem uší i na jiných místech. Pokožka bývá zarudlá a hodně svědí. Pacienti se seboreou by měli používat speciální mycí přípravek zvaný syndet.
  • Psoriáza (lupénka): jedná se o neinfekční zánětlivé onemocnění autoimunitního původu, při kterém se kůže obnovuje ve zrychleném tempu. Kožní buňky nejsou zralé a vytvářejí ideální prostředí pro vznik zánětu. Na kůži se objevují červené skvrny pokryté lesklými šupinami. V akutní fázi svědí a pálí, při škrábání krvácejí.
  • Atopický ekzém: u atopické dermatitidy se střídají fáze klidu a vzplanutí. Ve fázi vzplanutí se na kůži objevují zarudlá šupinatá ložiska, která hodně svědí. Kromě pokožky hlavy se ekzém vyskytuje na obličeji, krku, loktech, tříslech a kožních záhybech. Nadměrné škrábání stav pokožky výrazně zhoršuje – snadno do ní mohou pronikat mikroorganismy a hojení se tím značně komplikuje.

Další příčiny svědění pokožky hlavy

  • Stres: hormon kortizol, který se vytváří při prožívání stresu, prohlubuje zánětlivé procesy a může zvyšovat podráždění pokožky.
  • Některé léčebné postupy: svědění pokožky hlavy se často dostavuje v souvislosti s chemoterapií, radioterapií, cílenou léčbou a dalšími metodami, které se využívají při léčbě onkologických onemocnění. Pokud vlasy vypadají, pokožka je ještě mnohem citlivější a vyžaduje ochranu před slunečním zářením.
  • Nošení paruky: pokud budete mít na hlavě celý den paruku, není nic překvapivého, že vás pak může vlasová pokožka pořádně svědit. S tímto problémem se potýkají třeba onkologičtí pacienti. Riziko podráždění lze snížit pořízením paruky s tylovým podšitím, která by neměla citlivou pokožku tolik dráždit.
  • Každodenní nošení helmy či čepice: podobně jako paruka fungují i helma, klobouk nebo čepice. K podráždění navíc přispívá pot, pokožka se snadno zapaří. [7, 8, 9, 10, 11]
Když si tělo říká o pomoc: drobné symptomy, které „nemáme čas“ řešit Přečtěte si také:

Když si tělo říká o pomoc: drobné symptomy, které „nemáme čas“ řešit

Svědění hlavy u dětí

Svědění a podráždění pokožky hlavy se často objevuje i u dětských pacientů. Kromě podobných příčin jako u dospělých je další možností, která tyto potíže způsobuje, veš dětská. Jedná se o drobného parazita, který se velice snadno a rychle šíří v dětských kolektivech. Vši pak mohou od svých ratolestí samozřejmě chytit i dospělí. Mnozí lidé se mylně domnívají, že vši souvisí se špatnou hygienou. Je tomu ale přesně naopak, paradoxně si libují spíše v čistých vlasech.

Vši se živí lidskou krví, takže ačkoliv jsou na první pohled dost nenápadné, rychle na sebe upozorní tím, že způsobují svědění pokožky hlavy. Dítě má pak potřebu si hlavičku drbat. Při podezření na vši nejprve zkontrolujte oblast za ušima, týl a vlasovou linii nad čelem. Právě na tato místa vši nejčastěji kladou vajíčka (hnidy). Hnidy si lze snadno splést s lupy, jsou velké asi 1 mm a přilepené k vlasům.

Jak se zbavit svědění hlavy?

Pokud není svědění hlavy spojeno s kožním onemocněním, může vám ulevit pouhá změna šamponu. Vybírejte mezi přípravky, které jsou hypoalergenní, obsahují co nejméně složek a nejsou v nich agresivní mycí látky. Pokud máte pokožku hlavy suchou, prospějí vám hydratační přípravky. Do pečující rutiny můžete zapojit některé oleje, které zmírňují svědění a podráždění. Patří mezi ně třeba kokosový olej, ricinový olej nebo tea tree olej. Pomoct může i neemový (nimbový) olej, který má antiseptické účinky a pomáhá předcházet vzniku lupů. Kromě olejů budou citlivé a podrážděné pokožce prospívat produkty obsahující aloe vera a mentol. [12, 13, 14, 15, 16, 17]

Zdroje: nih.gov, aad.org, healthline.com, clevelandclinic.org, healthdirect.gov.au, medicinenet.com, medicalnewstoday.com, webmd.com, breastcancer.org, byrdie.com, mou.cz, cpzp.cz, pharmanews.cz, dermatologiepropraxi.cz

Autor článku

Copywriterka na volné noze spolupracující s Vitalia.cz. Po dokončení studia laboratorní diagnostiky ve zdravotnictví pracovala na oddělení klinické biochemie a hematologie.

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