Svědění kůže způsobují alergie, nemoci i stres. Často si na něj stěžují i nastávající maminky

9. 5. 2024 7:30
17 nových názorů

Trpět pocitem neustálého svědění kůže může být velice stresující a zároveň i pořádně otravné. Odolat nutkání inkriminované místo poškrábat se přitom mnohdy snáze řekne, než udělá. Navíc daný problém může značit i určité skryté zdravotní obtíže. Jak se tedy dá se svěděním kůže nejlépe vypořádat? Co vše se za ním skrývá a jde mu vůbec nějak předejít?

Proč nás svědí kůže?

Co se dozvíte v článku
  1. Proč nás svědí kůže?
  2. Jaké má svědění kůže příčiny?
  3. Projevy svědění kůže
  4. Svědění kůže v těhotenství
  5. Jak se zbavit svědění kůže?

Svědění kůže neboli pruritus představuje nepříjemný symptom, který v člověku vyvolává nutkavý pocit se na postiženém místě poškrábat. Tento jev může naznačovat celou řadu zdravotních i psychických potíží, přičemž některé z nich mohou být zcela běžné a poměrně banální a jiné jsou naopak závažnější. Pacienti si přitom nejčastěji stěžují na:

  • svědění kůže před spaním,
  • svědění kůže v noci,
  • svědění kůže po koupeli,
  • svědění kůže v zimě,
  • svědění kůže při onemocnění jater,
  • svědění kůže po opalování.

V některých případech se pak u pacienta objevuje svědění kůže bez vyrážky a jindy zase svědění kůže s vyrážkou v závislosti na tom, co daný problém způsobilo. Tento jev není vázaný na pohlaví, nicméně některé typy pruritu se vyskytují častěji u žen, zatímco jiné postihují více muže. Lékaři tedy dělí tento příznak do čtyř následujících kategorií, které se často vzájemně kombinují:

  1. pruritus neuropatický: dochází k němu na základě poškození periferního senzitivního neuronu nebo při poškození CNS,
  2. pruritus neurogenní: vzniká v CNS jako reakce na cirkulující pruritogenní látky,
  3. pruritus psychogenní: vzniká v důsledku nějaké psychické poruchy a dělí se dále na periferní a centrální typ,
  4. pruritus pruritoceptivní: vyskytuje se na kůži jako reakce na přítomnost zánětu.

Pocit svědění je fyziologický sebeobranný mechanismu podobně jako například bolest, který pomáhá chránit pokožku proti poškození vnějšími vlivy. V případě chronického škrábání postiženého místa ale může dojít k druhotným potížím, jako je například vznik kožních lézí nebo přenos potenciálních původců zánětu na jiné místo na těle pacienta. [1, 2, 3, 45]

Jaké má svědění kůže příčiny?

Kůže je největší orgán lidského těla a jednou z jejích hlavních funkcí je ochrana před viry, bakteriemi a dalšími hrozbami. Ve chvíli, kdy kožní buňky detekují nějakou podezřelou látku, mohou vyvolat reakci, která způsobí, že se kůže zanítí. Tento zánět se nejčastěji projevuje jako vyrážka, která zpravidla způsobuje svědění pokožky. Obvykle bývá zapříčiněna buď přímým kontaktem s nějakou dráždivou látkou či mikroorganismem, nebo se jedná o reakci na nějakou nemoc.

Příčin vyvolávajících svědění kůže je velmi mnoho, mezi nejběžnější však patří atopická dermatitida neboli ekzém. Jedná se o kožní nemoc, při které se v kožní bariéře vytváří mezery, z nichž uniká vlhkost. Navíc do těchto mezer bez potíží pronikají různé látky a mikroorganismy způsobující zde zánět nebo infekci. Za rozvojem potíží přitom zpravidla stojí geny nebo narušený imunitní systém pacienta.

Kromě ekzému jsou na vině často také různé alergie, například na určité druhy tkanin nebo některé potraviny. Alergická reakce v takovém případě nastává vždy, když se kůže dostane do kontaktu s daným alergenem. Na zasaženém místě se objeví vyrážka, kterou tvoří drobné puchýře nebo hrbolky. Mezi dobou, kdy byla kůže vystavena alergenu, a projevem vyrážky může přitom nastat určitá časová prodleva.

Pokožka vás pak může začít svědit také v momentě, když je příliš vysušená. Obvykle se v takovém případě objevují příznaky, jako je drsná, šupinatá nebo odlupující se kůže, změna zabarvení pleti, popraskané rty a tak dále. Tyto symptomy lze jednoduše zmírnit hydratačními krémy a dodržováním pravidelného pitného režimu. Pokud je však vaše pokožka extrémně suchá, může značit vážnější kožní problém. V takovém případě je vhodné navštívit dermatologa.

Neobvyklé však není ani svědění kůže po sprchování nebo koupeli. U mnoha lidí se tímto způsobem projevuje alergie na chlór. Zda patříte mezi ně, zjistíte tak, že cítíte po koupeli v chlorované vodě svědění po celém těle, kdežto po plavání v rybníce či jiném přírodním koupališti nikoliv. Mezi další časté příčiny svědění pokožky se pak řadí například:

  • poštípání nebo pokousání hmyzem,
  • příliš dlouhý pobyt ve špinavém prostředí,
  • nedostatek vitamínů či minerálů,
  • nepříznivé klimatické podmínky (přílišné teplo, vlhko, chladno),
  • kožní onemocnění (například svrab),
  • onemocnění spojená s poruchami štítné žlázy nebo ledvin,
  • hormonální výkyvy (například v období puberty),
  • přemíra sportovní aktivity,
  • psychické potíže,
  • únava a nedostatek spánku.

Samostatnou kapitolou v souvislosti s kožními problémy je pak také stres. Ačkoliv si to řada lidí možná nepřipouští, jedním z nejvýznamnějších faktorů podepisujících se na stavu pokožky je právě aktuální psychické rozpoložení. Čím více stresujících okamžiků člověk během daného období prožije, tím znatelnější stopy to na jeho kůži může zanechat. [6, 7, 8, 9, 10, 11]

Projevy svědění kůže

Svědění bývá buď lokalizované pouze na jednom místě, nebo může pacienta zasáhnout po celém jeho těle. Někdy se přitom objeví bez jakýchkoliv dalších změn na kůži, avšak v jiných případech je možné zaznamenat ještě další příznaky v závislosti na tom, co daný problém způsobilo. Typicky se jedná například o zanícení kůže, puchýře, skvrny, popraskanou pokožku a další projevy.

Kůže pacienta může svědit dlouho a velice intenzivně, ale stejně tak se někdy jedná pouze o krátkodobý problém. Čím více jej postižené místo svědí, tím více se obvykle škrábe a svůj stav ještě zhoršuje. Pokud problémy trvají déle než dva týdny, jsou tak závažné, že kvůli nim nemůžete spát, zasahují celé tělo nebo se k nim přidaly další příznaky, jako je hubnutí, horečka nebo noční pocení, měli byste vyhledat lékaře. [12, 13, 14]

Pravé neštovice se díky očkování podařilo vymýtit. Dnes se již vakcína běžně neaplikuje
Přečtěte si také:

Pravé neštovice se díky očkování podařilo vymýtit. Dnes se již vakcína běžně neaplikuje

Svědění kůže v těhotenství

Zcela běžným jevem je také svědění kůže během těhotenství. Tento příznak u nastávajících maminek souvisí se změnami, kterými jejich tělo v tomto období prochází. Za potíže je velice často zodpovědné natahování kůže v důsledku rostoucího bříška. Zejména u prvorodiček nebo vícečetných těhotenství je daný symptom poměrně častý.

Příčinou jsou však mnohdy také hormonální změny, které jsou zodpovědné například za suchou pokožku v těhotenství. Kromě nich se navíc u těhotných žen někdy rozvine také cholestáza, což je porucha jater způsobující v některých případech svědění kůže. Nejčastěji přitom dané osoby svědí oblast kolem břicha a prsou, jelikož tyto tělesné partie prochází změnami nejvíce. [15, 16, 17, 18]

Jak se zbavit svědění kůže?

Obecně platí, že pokud se u vás svědění pokožky objeví, neměli byste postižené místo nikdy škrábat. Úleva je totiž v takovém případě pouze dočasná a zároveň zde hrozí riziko, že inkriminovaná oblast začne krvácet, načež se do rány dostane infekce, jejíž následky mohou být potom ještě o poznání závažnější.

Pakliže se bude jednat pouze o důsledek poštípání, respektive pokousání hmyzem, doporučuje se místo řádně vydezinfikovat a následně namazat krémem či mastí zmírňující podráždění, jako je například oblíbený Fenistil. Na dané místo je vhodné také přiložit chladivý obklad. Jestliže však potíže nepolevují, je načase vyhledat odbornou lékařskou péči. Tím spíš, pokud si nejste jisti, co svědění ve skutečnosti zapříčinilo.

Abyste lékaři pomohli s určením správné diagnózy, zkuste si založit takzvaný „kožní deník“. V tomto dokumentu se pokuste zaznamenat vše, co jste během každého dne jedli, s kým jste přišli do styku a co jste dělali, a pozorujte, zda se na vaší pokožce v tomto období objevily nějaké změny. Pokud ano, zapište si jaké.

Potýkaly jste se se svěděním kůže v těhotenství?

Pro stanovení správné diagnózy musí lékař nejprve zjistit, zda svědění kůže způsobuje dermatologická nebo systémová choroba. Nejprve tak provede fyzikální vyšetření, v rámci kterého bude zkoumat stav vaší kůže, změny v zabarvení pleti a přítomnost některých pro určité nemoci specifických příznaků, jako jsou například pavoučkové névy, ikterus, xeróza nebo glositis. Dále se obvykle provádí také laboratorní vyšetření, krevní obraz či vyšetření hormonů, štítné žlázy a podobně.

Po stanovení diagnózy je pak nastavena léčba, která se odvíjí od příčiny, jež problémy způsobuje. Zpravidla zahrnuje užívání léků, různých kosmetických přípravků, které se aplikují přímo na kůži, nebo i alternativní terapii (například světelná terapie nebo elektrická stimulace nervů). Pokud pruritus způsobila závažnější choroba, je samozřejmě potřeba zvolit léčbu, která se zaměří na danou nemoc a ne pouze na eliminaci zmíněného příznaku.

Co pomáhá proti svědění kůže?

Stejně jako existuje celá řada příčin, které způsobují svědění kůže na těle, existuje rovněž i mnoho přípravků zejména v podobě krémů, tinktur nebo mastí na svědění kůže, které dokáží člověka tohoto problému (alespoň částečně) zbavit. Jedním z takových produktů je například hojně užívaný krém Exoderil.

Pro lidi trpící ekzémem se pak hodí například Bepanthen Sensiderm, zatímco při kopřivce je zase možné zvolit třeba potahované tablety Alerid. V každém případě však platí, že ještě před tím, než po jakémkoliv z výše uvedených (nebo i jiných) výrobků sáhnete, měli byste se poradit se svým lékařem, alergologem, potažmo dermatologem. Jak zmírnit svědění kůže a co přesně je jeho příčinou, totiž spolehlivě odhalí pouze odborník.

V případě, že jsou kožní potíže vyvolány stresem, je potřeba zapracovat na jeho odbourání. Člověk by se měl snažit takříkajíc hodit všechny starosti (alespoň ty méně podstatné) na chvíli za hlavu a věnovat se svým koníčkům, rodině, přátelům, sportu a jiným aktivitám, které ho činí šťastným a při nichž se spolehlivě odreaguje. [19, 20, 21, 22, 23]

Zdroje: medicinapropraxi.cz, dermatologiepropraxi.cz, my.clevelandclinic.org, mayoclinic.org, internimedicina.cz, healthline.com, medicalnewstoday.com, msdmanuals.com, healthdirect.gov.au, nhs.uk, ncbi.nlm.nih.gov

Pavlína (neregistrovaný)

Dobrý den, chtěla bych se zeptat na svědění kůže na vnější straně předloktí a paží, někdy i ramen. Objevuje se nepravidelně, o to víc intenzivně. Alergie nemám, nejde o poštípání, pitný režim dodržuji i spánek mám v pořádku. Trpím na pocení v menopauze, ale svědění paží se objevovalo i před menopauzou. Štítnou žlázu mám podle odběrů krve v pořádku. Děkuji za odpověď.

Dobrý den,
je zde několik variant - svědění může doprovázet onemocnění ledvin, jater, žláz s vnitřní sekrecí, ale i hematologická a onkologická onemocnění. Chodíte na pravidelné preventivní odběry krve? Jestli je vše v pořádku, může se jednat o histaminovou intoleranci - omezte alkohol, fermentované potraviny (kefír, jogurty), konzervované potraviny, kávu a plísňové sýry.

Jit (neregistrovaný)

Svědí mě už dlouhou dobu oblast genitálu, resp. kůže pod ochlupením.
Svědění je hlavně večer velmi intenzívní. Kůži v této oblasti mám již hodně rozškrábanou, takže kromě svědění mě pak pálí i rozškrabání.
Po osprchování a osušení mi trochu pomůže krém Panthenol (po opalování) s kyselinou hyaluronovou. Gynekologický problém nemám - prohlídka + cyto byly v pořádku. Na kožní jsem objednána, ale až za měsíc a potřebovala bych poradit jaká léčiva bych do té doby mohla užívat. Pravděpodobně se jedná (dle gynekoložky) o lichen scierosus. Je mi 70 let.

Dobrý den,
pokud nemáte kontraindikaci, lze užívat antihistaminika, která by mohla svědění potlačit. Zkuste lokálně fenistil gel, případně celková antihitaminika - volně prodejný analergin či cezeru.

Jarka (neregistrovaný)

Dobrý den.
Můžete mi poradit co způsobuje svědění POUZE na levé straně ? Začíná to v podpaží a pak postupně na levé straně hrudníku a někdy i levém prsu. Přijde mi divné , že jde jen o jednu stranu nikoliv třeba celou část trupu či těla. Taky jsem si všimla, že tento problém se mi občas během roku opakuje. Příklad třeba 4-5x do roka a trvá to většinou několik dni. Zhruba 3 dny. Předem děkuji za odpověď

  • 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 »