Plíseň nehtů trápí zhruba desetinu populace. Podle čeho tento problém poznáte?

1. 6. 2021 7:30
3 nové názory
Autor: Shutterstock

Zaznamenali jste, že se u vás rozvinula plíseň nehtů na nohou či na rukou? Ačkoliv se o tom příliš často nemluví, s tímto problémem se ve skutečnosti potýká velké množství pacientů. Typické projevy zahrnují změnu barvy a ztluštění nehtové ploténky, přičemž jednotlivé deformace mohou později vést až k odloučení ploténky od nehtového lůžka. Prozradíme, co pomáhá na plíseň nehtů a jak tento problém účinně odstranit.

Co je onychomykóza?

Co se dozvíte v článku
  1. Co je onychomykóza?
  2. Příčiny onychomykózy
  3. Jaké má plíseň nehtů příznaky?
  4. Typy onychomykózy
  5. Možné komplikace
  6. Diagnostika
  7. Léčba plísně nehtů
  8. Prevence

Jako onychomykóza (latinsky onychomycosis) se označuje mykotická infekce nehtových plotének či nehtových lůžek, která je rozšířená prakticky po celém světě. Tvoří až 40 % všech onemocnění nehtů, s nimiž se lidé pravidelně setkávají, přičemž pacienty trápí hlavně plíseň na nehtech u nohou, ale výjimkou samozřejmě není ani nehtová plíseň postihující horní končetiny.

Ačkoliv se pokročilá plíseň nehtů může zdát hlavně jako nepříjemný kosmetický problém, který nemocným způsobuje psychosociální trauma, ve skutečnosti se často pojí také s celou řadou zdravotních komplikací, jejichž rozvoj není radno podceňovat. Nehty napadené infekcí jsou totiž oslabené a snadno jimi proniknou další bakterie, které mohou způsobit rozvoj závažných nemocí.

Ve vyspělých zemích se prevalence onychomykózy pohybuje zhruba v rozmezí od 2 do 13 % a výskyt tohoto onemocnění významně stoupá s přibývajícím věkem pacientů. U dětí je naopak plíseň na nehtech spíše vzácná, jelikož jim nehty rychle rostou a jejich nehtové ploténky jsou malé. Co se týče prevalence tohoto onemocnění na našem území, plíseň nehtů dnes trápí až 10 % české populace.

Příčiny onychomykózy

Nehtová mykóza často bývá důsledkem neléčené kožní infekce, špatné péče o nohy a ruce nebo různých zdravotních obtíží. Lékaři přitom rozeznávají tři různé skupiny původců tohoto onemocnění, kam se řadí především dermatofyty, ale také kvasinky a jiné patogenní organismy, jako jsou například oportunní mikromycety.

V mírném pásmu za rozvojem nehtové plísně nejčastěji stojí dermatofyty, které rozkládají základní stavební jednotku nehtu v nehtové ploténce. Jsou přitom schopné přežívat v rohovině i jejích odloučených částech po dobu několika měsíců. Téměř v 90 % případů jsou na vině patogeny Trichophyton rubrum a Trichophyton interdigitale, dále pak třeba Epidermophyton floccosum či Trichophyton violaceum.

Pokud jde o kvasinkové původce onychomykózy, zde hraje roli především Candida albicans, což je druh způsobující ústní a genitální houbové infekce, který u pacientů vyvolává hlavně plíseň nehtů na rukou. Oportunní mikromycety jsou pak za rozvoj infekce zodpovědné hlavně u jedinců s oslabeným imunitním systémem. Nejčastěji se přitom jedná o tyto druhy:

  • Scopulariopsis brevicaulis,
  • Scytalidium (Neoscytalidium),
  • Aspergillus.

Kvasinky a oportunní mikromycety mají v našich podmínkách dohromady na svědomí pouze 8 % případů, kdy se u člověka rozvine plíseň nehtů. Scytalidium přitom postihuje hlavně osoby v tropech a onemocnění pak často přetrvává také v momentě, kdy se přesunou do mírného pásma. Candida albicans nejvíce trápí pacienty, kteří si často namáčejí ruce do vody.

Rizikové faktory

Výskyt onychomykóz se v Česku během posledních desetiletí výrazně zvýšil a tento trend údajně stále pokračuje. Svou roli přitom hraje celá řada rizikových faktorů, které k rozvoji tohoto nepříjemného onemocnění přispívají. Sem patří především:

  • vyšší věk,
  • obezita,
  • tinea pedis,
  • poruchy imunity,
  • traumatické poškození nehtů,
  • poruchy metabolismu a jiná onemocnění,
  • sportovní aktivity, které porušují perionychiální zóny,
  • nošení uzavřené a neprodyšné obuvi,
  • návštěva společných sprch, saun či veřejných bazénů,
  • dlouhodobá macerace rukou ve vodě a vlhké klima,
  • léčba antibiotiky, kortikosteroidy, imunosupresivy a cytostatiky.

Mezi hlavní rizikové faktory patří vyšší věk pacientů, což se pojí také se snížením periferní vaskulární cirkulace, s pomalejším růstem nehtů a se zvýšenou náchylností k různým druhům infekcí. K traumatickému poškození nehtů pak může dojít nejen vlivem sportovních aktivit, ale také kvůli špatně prováděné pedikúře.

Pokud jde o choroby, které s výskytem plísně nehtů na rukou a na nohou úzce souvisí, jedná se především o různé poruchy metabolismu. Například diabetici se s onychomykózou potýkají až 3krát častěji než zdraví jedinci. Jedním z onemocnění, která mohou rozvoj nehtové plísně také způsobit, je pak i psoriáza (lupénka).

Nákaza se nejlépe šíří na zapařené kůži a plísni se daří především u lidí, kteří se nadměrně potí, nosí ponožky z umělých materiálů nebo třeba uzavřenou obuv, která není dostatečně prodyšná. Mezi nejčastější místa, kde se s onychomykózou pacienti setkávají, patří bazény, sauny či sportovní šatny, přičemž k přenosu infekce většinou dojde kontaktem s plísní na šupinkách kůže (přímo i nepřímo).

Jaké má plíseň nehtů příznaky?

Co se týče onychomykózy, nejčastěji postižené bývají nehty na nohou, konkrétně pak hlavně na palci a na malíčku. Zpočátku přitom bývá toto onemocnění asymptomatické, ale později se připojuje celá řada nepříjemných projevů, které pacienty trápí z kosmetického hlediska a někdy vedou také k návštěvě lékaře.

Mezi prvotní příznaky patří postupné ztlušťování okraje nehtu, který pak začíná žloutnout, deformuje se a může se také drolit nebo třepit. Později se barva nehtu může dokonce změnit až na hnědou, zelenou nebo černou, přičemž plíseň často napadá i okolní kůži, která je pak zarudlá, svědí, pobolívá, nepříjemně páchne a mění se v šupinatou.

S dalším postupem infekce se nehet stává křehčím a některé jeho části se mohou ulamovat nebo naopak zarůstat. Pokud se takový stav neléčí, může se objevit plíseň pod nehtem a kůže se pak nepříjemně zanítí. Pak způsobuje plíseň nehtů bolest v okolí celého lůžka, přičemž se objevují také bílé nebo žluté skvrny a může docházet i k odlučování ploténky od nehtového lůžka (onycholýza).

Ostré a výrazně deformované nehty pak mohou způsobovat poranění pokožky nebo jiné komplikace. Pokud se navíc onychomykóza včas neléčí, plíseň se může rozšířit z jednoho nehtu i na všechny ostatní. Zvláště na pozoru by se pak měli mít starší pacienti, u kterých nehty rostou o mnoho pomaleji a jejichž krevní cirkulace je snížená.

Typické příznaky plísně nehtů:

  • svědění mezi prsty,
  • změna kvality nehtů,
  • nažloutlé skvrny na nehtech, které později černají,
  • vroubkování, zbytnění a deformace nehtů,
  • zkřehlost nehtů a postupné zarůstání,
  • vyšší lomivost a drolivost nehtů,
  • změna vzhledu a kvality okolní kůže,
  • případně i bolest či nepříjemný zápach.

Pokud se onychomykóza rozvine na viditelných místech nebo pokud chce pacient s nástupem letních měsíců začít nosit otevřenou obuv, kde bude plíseň nehtů více patrná, může mu toto onemocnění způsobit také vážné psychické problémy. Někteří pacienti dokonce upadají do depresí a odmítají jakýkoliv sociální kontakt.

Jak řešíte onychomykózu?

Typy onychomykózy

Podle klinického obrazu rozlišují lékaři několik různých druhů onychomykózy. Plísňové onemocnění nehtů se obvykle vyskytuje v těchto variantách:

  • distální a laterální subunguální onychomykóza,
  • proximální subunguální onychomykóza,
  • superficiální bílá onychomykóza,
  • totální dystrofická onychomykóza,
  • onychomykóza způsobená kvasinkami,
  • typ endonyx.

Distální a laterální subunguální onychomykóza představuje nejčastější formu nehtové plísně, kterou mají na svědomí především dermatofyty Trichophyton rubrum a Trichophyton interdigitale. Začíná většinou na volném okraji nehtu, odkud postupuje k zadnímu nehtovému valu, přičemž nehtové ploténky bývají ztluštělé a matné, pod nehty se objevuje hyperkeratóza a dochází k odlučování nehtové ploténky od lůžka.

Proximální subunguální onychomykóza se u zdravých pacientů téměř nevyskytuje, ale velmi často trápí jedince s poruchami imunity. Stejně jako v předchozím případě je nejčastější příčinou obtíží Trichophyton rubrum, přičemž nemoc může postihovat i hlubší vrstvy nehtové ploténky a hlavní projevy zahrnují leukonychii (přítomnost bělavých teček, plošek či pruhů).

Superficiální bílá onychomykóza bývá způsobena invazí plísně do povrchových vrstev nehtové ploténky, což se projevuje hlavně bílým zbarvením povrchové části nehtu. Nejčastěji se tento problém objevuje na nehtových ploténkách palců, rozvíjí se vlivem přítomnosti kvasinek či Trichophyton interdigitale a představuje zhruba 10 % případů onychomykózy.

Totální dystrofická onychomykóza způsobuje poškození nehtů v celém rozsahu. Ploténky bývají většinou deformované, výrazně ztluštělé a na povrchu matné. Barva nehtu se postupem času mění na žlutavou nebo hnědou a výjimkou není ani úplná destrukce celé nehtové ploténky. Tento typ obtíží je přitom charakteristický pro mukokutánní kandidózu a může být také výsledkem neléčené onychomykózy předchozích typů.

Onychomykóza způsobená kvasinkami se objevuje hlavně na nehtech horních končetin a trápí především pacienty, kteří dlouhodobě vystavují své ruce vodnímu prostředí či prostředí s vysokým obsahem uhlovodanů (například pekárny a cukrárny). Nehtové ploténky pak bývají postiženy v proximální části v oblasti zadního nehtového valu. Patrné bývá zarudnutí, hnisavá sekrece či odloučení nehtové ploténky od nehtového lůžka.

Kromě výše zmíněných druhů onychomykózy lékaři rozlišují také typ endonyx, což je označení pro masivní postižení celé nehtové ploténky bez přítomnosti zánětlivých změn v nehtovém lůžku, bez hyperkeratózy a bez onycholýzy (odloučení od nehtového lůžka). Pokud jde o onychomykózy způsobené oportunními mikromycetami, někdy se vyznačují zelenavou nebo černou dyskolorací.

Možné komplikace

Pokud má onychomykóza chronický průběh, může se objevit například bolest při delším stání nebo bolest při chůzi a někteří pacienti si dokonce stěžují na parestézie v postižené oblasti. Drobná poranění v okolí postiženého nehtu pak mohou být vstupní branou bakteriální infekce, což může vést k rozvoji růže, osteomyelitidy, flegmonózních zánětů, gangrény (u diabetiků) či sepse.

Diagnostika

Že se skutečně jedná o plíseň na nehtech nohou či rukou, mohou lékaři potvrdit pomocí několika různých vyšetření. Sem patří například mikroskopické vyšetření (KOH-testy) a kultivační testy, které slouží k rychlému potvrzení onemocnění a k určení přesného druhu mykózy. Záchytnost mikroskopického vyšetření je přitom asi 50–70 % a v případě kultivačního vyšetření je to 30–50 %.

Před mykologickým odběrem by si pacient neměl své nehty ošetřovat po dobu 6 týdnů. Jedná-li se o laterodistální formu onychomykózy, materiál se odebírá z nehtového lůžka nebo ze spodní části nehtu, a to na místě přechodu od zdravé do nemocné části. V případě proximální formy onychomykózy lékaři odebírají materiál co nejblíže lunuly a u superficiální formy zase z povrchových ložisek.

Dále se provádí také histologické vyšetření pomocí PAS (Periodic Acid Schiff), které slouží k průkazu mykotických vláken. Stejně jako v případě přímé mikroskopie tyto testy neumožňují druhovou specifikaci dermatofyt. Výhodou je však odlišení a vyloučení dalších možných onemocnění, jako je například psoriáza či lichen planus.

Nejcitlivější, nejpřesnější a nejrychlejší metodou, pomocí které je možné prokázat přítomnost dermatofyt, je přímá detekce DNA dermatofyt. Tato PCR (Polymerase Chain Reaction) metoda je ovšem výrazně finančně náročnější a běžně se tedy nepoužívá. Důležité je pak samozřejmě v rámci diferenciální diagnostiky odlišit onychomykózu od jiných komplikací podobného ražení, kam patří například:

  • psoriáza,
  • lichen planus,
  • kontaktní dermatitida,
  • Morbus Darier,
  • ichtyózy,
  • idiopatické onycholýzy,
  • yellow-nail syndrome,
  • trofické poruchy
  • poruchy růstu,
  • traumatická poškození,
  • bakteriální infekce.

Léčba plísně nehtů

Pokud dojde k rozvoji onychomykózy, pacienti se nejčastěji ptají, jak odstranit plíseň z nehtů a jaká existuje pro plíseň nehtů léčba. V tomto případě existuje celá řada možností, a to od použití lokálních přípravků přes různé babské rady až po systémovou terapii nebo chirurgické řešení. Léčba by se ale v každém případě měla odvíjet od individuálního stavu a obtíží pacientů. Vždy se však jedná o dlouhodobý proces.

Lokální léčba

V počátečních stádiích onychomykózy se používají lokální přípravky, jako je například mast na plísně (Canespor, Exoderil) či protiplísňový lak na nehty. Dobré vlastnosti vykazují účinné látky amorolfin a cyklopyroxilamin, ale také bifonazol, oxikonazol, naftifin a terbinafin ve formě roztoku.

U hyperkeratotických nehtů se ještě předtím používají keratolytické preparáty v silné koncentraci, které slouží ke změkčení nehtové ploténky a jednoduššímu mechanickému obrušování. Léčba přitom musí být aplikována pravidelně alespoň po dobu 6 měsíců, nejlépe však tak dlouho, dokud úplně neodrostou postižené nehtové ploténky.

Systémová léčba

Dalším způsobem, jak odstranit plíseň nehtů, je systémová léčba. Používá se například terbinafin v dávce 250 mg denně po dobu 2–3 měsíců v případě onychomykózy horních končetin a po dobu 3–4 měsíců u onychomykózy na nohou. V pulzní terapii je to pak itrakonazol používaný jako lék na plíseň nehtů v několika cyklech podle místa postižení.

Kombinovaná léčba

V tomto případě terapie kombinuje lokální antimykotika a systémová léčiva. Největší výhodou této metody je penetrace léčivé látky do nehtové ploténky z jejího povrchu i ze zadního nehtového valu. U hyperkeratotických nehtů by pacienti zároveň měli přistoupit k jejich mechanickému obrušování po předchozí aplikaci keratolytických přípravků.

Chirurgický zákrok

Při celkové terapii se někdy přistupuje také k ablaci nehtu, a to hlavně u pacientů, jejichž nehty jsou výrazně ztluštělé a deformované. Zároveň je obvykle trápí zarůstající nehtové ploténky, které mohou pacientům působit výrazné zdravotní obtíže.

Laserová a PDT léčba

V některých případech se léčba plísně nehtů řeší prostřednictvím laserů s dlouhým pulzem a vlnovou délkou 1064 nm či 980 nm. Na základě principu selektivní fototermolýzy se v cílové tkáni mění energie laserového paprsku na teplo. Jelikož jsou mikroorganismy na vyšší teploty citlivé, tato terapie, která je alternativou k tradiční léčbě pomocí antimykotik, je postupně zničí.

Kromě laserové terapie se při léčbě onychomykózy někdy používá také fotodynamická terapie (PDT), která ovšem v praxi není příliš rozšířená. Spočívá v aplikaci keratolytických preparátů a následně také fotosenzibilizátoru 20% roztoku metylesteru kyseliny 5-aminolevulové. Jakmile uplyne inkubační doba, používá se excimerový laser či LED zářič.

Přírodní léčba

Nevíte si rady, jak se zbavit počínající onychomykózy? Pak můžete vyzkoušet také léčbu nehtové plísně přírodními prostředky. V boji proti plísním pomáhá například tzv. chytrá houba neboli pythie, která slouží také jako prevence. Dále se používá tea tree olej, oreganový olej, česnek na plíseň nehtů či ocet na plíseň nehtů. Mezi prospěšné bylinky se pak řadí třezalka, arnika nebo šalvěj.

Prevence

Aby k rozvoji onychomykózy vůbec nedošlo, je vhodné dodržovat základní hygienická pravidla a soustředit se na správnou péči o nehty. Nezapomínejte proto na následující preventivní opatření:

  • Nohy si myjte denně a poté je vždy důkladně vysušte (obzvlášť mezi prsty).
  • Nepůjčujte si cizí hygienické potřeby (ručníky, žínky, mýdla).
  • Nepůjčujte si cizí boty (ideálně ani pantofle či přezůvky na návštěvě).
  • Noste ponožky z přírodních materiálů (bavlna).
  • Při zvýšené potivosti si během dne ponožky vyměňujte.
  • Investujte do kvalitní obuvi z prodyšných materiálů.
  • Boty během dne střídejte a obuv také pravidelně dezinfikujte.
  • Ve veřejných prostorách (bazény, sauny, šatny) nechoďte naboso.
  • Dbejte na pravidelné odstraňování odumřelé kůže (ideálně absolvujte kvalitní pedikúru).
  • Pokud na plísně trpíte, preventivně si nohy koupejte v roztoku hypermanganu nebo v octové lázni.

Zdroje: dermatologiepropraxi.cz, wikiskripta.eu, lekarnickekapky.cz

Anna (neregistrovaný)
Z vlastní zkušenosti mohu doporučit kapky Normafeet. Antifungální přípravek s oleji. Odstraňuje plísně a dobře zvlhčuje pokožku. Hlavně je používat pravidelně, nezapomeňte a bude dobrý účinek.
Plíseň (neregistrovaný)

Dobrý den už jsem vyzkoušela všechny preparáty na plíseň nehtů ale žádné účinky jsem neshledala , už nevím jak se ty plísně na nehtech zbavila a neekzisteje snad žádný preparát který by mě té plísně zbavila jsem velice bezbranná a vyhazují mě peníze za něco co nefunguje .

Dobrý den,
ano, bohužel léčba plísně nehtů je svízelná a dlouhodobá. Některé léčivé přípravky (třeba perorální léky jako terbinafin) podléhají lékařskému předpisu. Doporučuji se tedy objednat k dermatologovi, který vám předepíše léčbu, která by měla fungovat lépe než volně dostupné přípravky.

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