Rakovinu prsu mají často ženy, které o někoho pečovaly

9. 5. 2013

Sdílet

Autor: Vitalia.cz / Ondřej Hošt
ROZHOVOR – S vedoucí lékařkou Mamma centra o odmítání léčby, významu prevence, bolestivosti mamografie a vlivu psychiky na rozvoj rakoviny. „Souvislost tu určitě je,“ říká Alena Bílková.

Zabránit vzniku nádoru prsu neumíme. Jeho včasné odhalení je tak v podstatě jediná možná (nebo alespoň dosud známá) prevence v případě rakoviny prsu. Jak je tedy možné, že se jí stále plno žen vyhýbá? Mají strach? „Je to naopak, bát by se měly ty ženy, které na prevenci nechodí,“ říká ALENA BÍLKOVÁ, vedoucí lékařka pražského Mamma centra Zelený pruh.

Kdo na prevenci nejvíc kašle? Slyšela jsem, že ženy z Prahy, které to přitom mají nejdostupnější.

Ženy na prevenci chodí, ale nerovnoměrně. Skutečně podle přehledů ženy z Prahy chodí nejméně. Ale proč tomu tak je, těžko posoudit. Možná jsou více zaneprázdněné. Řekla bych, že by spíš měly být prevenci nakloněny, docela mě překvapuje, že tomu tak není. Naopak na jihu Moravy je účast na prevenci veliká.

Sledujete i jiná kritéria, například věk? Dbají na prevenci víc mladší nebo starší ženy?

Prevence je určena a hrazena pojišťovnou pro ženy od 45 let, horní hranice je neomezená. Ženy ale často přicházejí už okolo 40 let, s tím, že si vyšetření samy uhradí. Chodí ženy mladší i starší, ale nad 70 let už velmi málo.

Hodně žen kolem třicítky chodí na preventivní ultrazvukové vyšetření. Pokud je onemocnění v rodině, tak přicházejí i dříve. Chodí ženy jednak v riziku, dále zodpovědné, například když plánují rodinu a chtějí vědět, zda jsou v pořádku. Nebo ženy, které si nahmátnou nějakou bulku, ale u těch mladých se většinou nejedná o nic závažného. Ale nelze to podcenit.

Chodí k vám často ženy, které si najdou bulku samy?

Pokud si ženy něco nahmatají, nemusí to být zrovna nádor, ale jen cysta nebo okrsek žlázy. Pokud si něco nahmátnou, neměly by ale čekat, ale rovnou se objednat na vyšetření. Aby si prsa mohly vyšetřit samy, je zapotřebí, aby věděly, jak to provádět.

Samovyšetření je doménou spíše mladších žen. Nádor se dá nahmatat od velikosti zhruba 1,5 až 2 cm a to je pořád ještě poměrně malý.

K tématu: Rakovinu prsu odhalíte včas díky samovyšetření

Jak staré jsou nejmladší pacientky?

Asi 50 % žen s nádorem prsu je v kategorii od 53 do 73 let. Je to nádor vyššího středního věku a vyššího věku. Ale vyskytuje se i u mladých žen, jsou to výjimky, ale stane se, že se nádor objeví i u ženy po dvacítce.

Výskyt nádoru u žen mezi 20 až 35 lety je za poslední roky zhruba stejný, kolem 120 ročně. Není to kdovíjak velké číslo, ale když si představíme, že se týká nejen těchto žen, ale i jejich rodin, pokud mají děti, tak samozřejmě i jejich malých dětí. V tomto věku ještě někdy děti nemají, ale rodinu výhledově plánují, tak je to situace pro tu ženu velmi náročná.

Dá se říct, že nádor v pokročilejším věku už není takové neštěstí?

Neštěstí je to pro každou ženu, když se to zjistí, bohužel v mladém věku nádory bývají agresivnější. U starších jinak nemocných žen se dají léčit i třeba jen hormonálně, léčba nemusí být tak náročná. Ale neplatí to stoprocentně, i osmdesátiletá žena může mít agresivní nádor. Pokud však žena v pokročilém věku má nádor prsu a zemře, je to většinou z jiného důvodu, než na rakovinu prsu, protože nemocnost už je vyšší.

Ale strašákem je to v každém věku, žena se s tím musí srovnat. Pokud je správně a účinně léčená, chodí na pravidelné kontroly, většinou vidí, že život jde dál a že se vrací do normálu. Nervy pracují hlavně v době, kdy jde na kontrolu. Jenže některé ženy nechtějí být léčeny.

Setkáváte se s odmítáním léčby častěji?

Není to časté, ale čas od času má nějaká žena svou hlavu a nechce podstoupit léčbu. Samozřejmě chemoterapie je náročná a má vedlejší účinky, jenže na nádor funguje, proto se taky používá. Za posledních dvacet let je nárůst nádorů větší, ale úmrtnost je za tu dobu stejná, v posledních letech dokonce nižší. A roli hraje jednak to, že začal screening a nádory se zachytí v menším stadiu, ale i to, že léčba – chemoterapie je účinná. Některé ženy však mají z této léčby obavy, vyhýbají se jí, hledají alternativy. Také se bojí ablace (odstranění) prsu, toto hledisko je samozřejmě pro ženy důležité, ale pak si většinou řeknou: hlavně, abych byla zdravá. Ablace se provádí jen v indikovaných případech, kdy to jinak nejde, a není to tak častý výkon. V posledních letech ale výrazně přibylo prs šetřících operací, takže žena operací většinou o prs nepřijde.

Slyšela jsem o případu mladé ženy, která odmítla léčbu, s tragickým koncem…

Ano, stává se to. Někdy ženy volí alternativní léčbu a nedopadne to dobře. Samozřejmě, někdy i žena, která přijde zavčasu a její typ nádoru je agresivní, tak dojde ke smutnému konci. Ale pokud žena má tu šanci absolvovat klasickou léčbu a vyléčit se, tak by ji měla podstoupit, a ne absolvovat alternativní léčbu, která jí nemusí pomoci.

Máte možnost takové případy dál sledovat? Víte o ženě, která by se alternativní léčbou uzdravila?

Stát se to může, pokud nádor není agresivní. Tehdy roste jen do určité velikosti a dál už ne. Setkala jsem se ženou, která měla nádor, cíleně nepřišla na plánovanou biopsii, nebyla k dosažení a ukázala se až po dvou letech, nádor byl stejně velký. Záleží na mnoha okolnostech. Odpůrci screeningu ve světě říkají, že některé nádory, kdyby se na ně nepřišlo, v těle neporostou. Ale která žena by souhlasila s tím, že bude mít v těle nádor, o kterém nevíme, jak se jeho vlastnosti během doby změní? Mohou přijít stresy, nepředvídatelné vlivy a z „hodného“ nádoru se stane agresorem.

Přečtětě si: Nespokojenost, stres a rakovina

Zmínila jste stres. Sledujete i tenhle aspekt a setkáváte se s tím, že by tu byla souvislost s rakovinou prsu?

Ano, všimla jsem si, že jde velmi často o ženy, které se o někoho staraly, měly někoho nemocného, dramaticky se rozváděly… Neměly proto na sebe čas a byly ve stresu a po nějaké době se u nich vyvinul nádor. Já se na to často ptám. Pacientky uvádějí, že měly nemocnou maminku, o kterou pečovaly, nemocné dítě, nevěděly, jak to dopadne… Ale četla jsem, že stres v zaměstnání na to nemá vliv, spíše takový, kdy se bojíte o blízkého člověka, sám o sebe, protože se ve vaší rodině něco děje. Myslím, že souvislost tu určitě je a hraje roli. Ale tomu se člověk těžko vyhne, protože život prostě přináší nejen radost.

Prevence rakoviny prsu

  • od 25 let – u žen s rodinnou anamnézou či při rizikových faktorech, klinické vyšetření prsou a ultrazvuk
  • od 45 let – jednou za dva roky mamografické vyšetření prsu
  • Ženy by na screeningovou mamografii měly mít žádanku od gynekologa nebo od praktického lékaře

Vyšetření prsou jsou dvě – ultrazvuk a mamograf. Jaký je mezi nimi rozdíl?

Jsou to dvě naprosto odlišné metody, ale žádná nestojí sama o sobě, vzájemně se doplňují. U mladých žen děláme v rámci prevence jenom ultrazvukové vyšetření, protože mléčná žláza je u nich bohatá a mamograf nám nepřinese podstatnou informaci, pokud je žena zdravá. Kdyby se dělal u mladých žen mamograf, tak bychom tam viděli hodně žlázy, ale ne to, co se za ní skrývá. Navíc pokud by žena chodila od mlada každý rok nebo ob rok, přeci jenom je to vyšetření s použitím rentgenového záření a působící na prs, to by nebylo úplně ideální. Ale samozřejmě, když je u mladé ženy patologický nález, tak se mamograf doplní. Dokáže ukázat některé změny, které nevidíme na ultrazvuku.

Ultrazvuk zase objasní některá ložiska, která vidíme na mamografu. Vidíme okrouhlý stín a nevíme, jestli je to cysta, nebo nějaké ložisko, to nám pomůže upřesnit ultrazvuk.

Záleží tedy na věku – od 40 let mamograf, do 40 ultrazvuk, ale může se to kombinovat s ohledem na nález.

Často se uvádí, že mamograf je naprosto nebo téměř bezbolestný, mě to bolí hodně. Je to mnou, přístrojem, obsluhou?

Je to individuální, mě samotnou to taky bolí, není to pro mě nic příjemného, nicméně na screeningovou mamografii chodím. Některé ženy říkají, že je to nebolí vůbec. Obzvlášť teď, co máme nové mamografy, to hodnotí jako mnohem příjemnější. Je to dané jednak konstrukcí přístroje, také tím, jestli má žena málo žlázy nebo hodně. Takové ty prsy, které jsou převážně tukové, se lépe stlačují (komprimují) a tolik to nebolí. Pokud má žena v prsech víc žlázy, měla by – pokud to jde – kvůli menší bolestivosti chodit těsně po menstruaci. I tak některé ženy říkají, že je to pak bolelo strašně moc a dlouho, ale to se těžko posuzuje. Ale rozhodně to není častý problém.

Já mám podobnou zkušenost a tak mě napadalo, jestli to vyšetření nemůže samo něco vyvolat, podráždit, spustit nějaké změny?

Zase kdyby ta komprese nebyla, prs by nebyl dobře vyšetřený. Protože je prs kulatý, tak má nerovnoměrnou tloušťku, při kompresi je tloušťka prsu pak rovnoměrná. To je ideální pro rentgenové paprsky, aby se vytvořil snímek, který pak můžeme dobře vyhodnotit. Některé z nás to prostě po vyšetření bolí i déle než jeden den, ale komprese prsní žláze neuškodí. Nepříjemné to je, ale ten jeden den za dva roky myslím všechny zvládneme.

Ve vaší čekárně je letáček pro pacientky, který vyvrací tvrzení o vlivu mamografie na vznik nádorů štítné žlázy. Kde se berou podobné fámy?

Rozšířilo se to z pořadu americké televize, kde lékař uvedl, že při mamografii je ozařovaná štítná žláza. Pravda je, že u žen, které chodí na léčebné ozařování, některé změny ve štítné žláze nastat mohou. Ale ne při mamografickém vyšetření. I od vrcholných odborníků přes mamodiagnostiku v České republice vyšlo vyjádření, že mamograf štítné žláze neškodí. Když někdo chce ochranný límec, tak ho poskytneme. Ale je to nesmysl, není se čeho bát.

Karcinom prsu je nejčastějším závažným nádorovým onemocněním u žen v ČR i ve světě a jeho výskyt stále stoupá. Ví se proč?

Určitě má vliv prostředí, ve kterém žijeme. Také je největší výskyt v Evropě a v severní Americe. Otázkou je, jak to vypadá v Číně. Obecně v jihovýchodní Asii je výskyt nízký, ale uvádí se, že pokud se rodiny přestěhují do severní Ameriky, za dvě generace jsou na tom stejně jako ostatní tamní obyvatelé.

10–15 procent karcinomů prsu je podmíněno geneticky, ženy jsou nositelkami genové mutace (BRCA1 a BRCA2). U většiny příčinu přesně neznáme.

Nositeli zmíněných genů mohou být i muži. To znamená, že i muž může mít rakovinu prsu?

Ano, může. Dcera může „zdědit“ rakovinu i po otci, ale větší riziko hrozí z linie matky. Pokud má gen třeba sestra otce, je to riziko nižší, než když jde o tetu ze strany maminky. Ale stejně, pokud se to v rodině vyskytne, doporučují se preventivní prohlídky.

Pokud má muž zhoubný nádor, taky mu hrozí operace prsu?

Léčba je úplně stejná jako u žen. Bylo období, kdy chodili muži častěji než obvykle. Něco v prsu nahmátli, řekli to doma ženám a byli jimi poctivě dohnáni na vyšetření. Následovalo to po nějakém programu v televizi, kde se hovořilo o nádorech prsu i u mužů. Nositelkami prevence v rodině jsou ženy.

Bulka v prsu u muže nemusí být závažná. Dost často u mužů bývá tzv. gynekomastie – zbytnělá žláza. Může jít i o lipom, nezhoubný tukový nádor. Ale je důležité hmatný útvar vyšetřit. Rakovina prsu u mužů je málo častá, ale je třeba na toto onemocnění u mužů také myslet.

A dá se u muže udělat mamografie? Technicky?

Dělá se, i u mladých chlapců, když je to potřeba. Kůže s dvorcem se vytáhne a prs se osnímkuje. A u některých silnějších mužů to tedy vůbec není problém…

Krom případů zmíněné genetické mutace, hraje roli výskyt rakoviny prsu v rodině?

Ano, někdy je v rodině výskyt nádoru, dokonce i u více příbuzných, a nemusí tam vždy být genová mutace.

Pokud k nádoru dojde v pokročilém věku, nejenom že má nemoc klidnější průběh, ale také již v podstatě nehrozí její zvýšené riziko pro potomky?

Je to tak. Pokud se nádor vyskytne u ženy po menopauze, tak u jejích příbuzných – dcer, neteří, je pravděpodobnost vzniku zhoubného nádoru prsu téměř stejná jako v ostatní populaci. Horší je situace, když je nález rakoviny prsu u příbuzné pod padesát let, nebo kolem čtyřicítky, protože riziko je vyšší. A je potřeba, pokud maminka má například nádor v 45 letech, aby dcera byla sledována od svých 35, tedy o deset let dříve.

Nositelky genu mají tedy velkou pravděpodobnost onemocnění?

Velkou, ale není to sto procent.

Mohou s tím něco dělat? Dá se vůbec dělat něco jiného, než chodit na prevenci?

Zdravý životní styl bych doporučila úplně všem. Zvlášť, pokud žena ví, že je nositelkou genové mutace, měla by si hlídat váhu, pravidelně se hýbat… Netahat čerta za ocas. Bohužel ani to nezaručí, že neonemocní. Stejně tak, i kdo žije zdravě, může mít infarkt, když k tomu má rodinné dispozice. Ale třeba ho dostane později.

Pokud byl třeba u matky průběh rakoviny prsu dramatický, dcera celý náročný průběh s maminkou prožila a nedopadlo to dobře, dá se tato situace u nositelky genové mutace řešit tzv. subkutánní mastektomií, tj. odstraněním mléčné žlázy se zachováním kůže prsu a místo odstraněné žlázy se do prsu dá v jedné době implantát. Ale to je preventivní extrém, který však může zachránit život. K tomu se odhodlat opravdu není jednoduché. Většinou to ženy řeší tím, že chodí na pravidelné kontroly. Ale jsou i takové, které se k tomu rozhodnou, protože chtějí mít jistotu a klid.

Může se stát, že přestože chodím na preventivní vyšetření, je nádor odhalen pozdě?

Existují i tzv. intervalové karcinomy, které i během těch dvou let můžou narůst. Je to vzácné, ale stává se to. Proto ženám mezi 45 a 50 doporučujeme, ať chodí každý rok. A to samé ženám nad 50, pokud užívají hormonální substituční léčbu. Pokud má žena pozitivní rodinnou anamnézu, tam opatrně s užíváním hormonálních preparátů. Je to sporné, nejsou studie, které by přesně řekly, že to může nějakým způsobem škodit, ale vliv na mléčnou žlázu mají. Na druhou stranu to pomáhá od příznaků klimakteria. Tady by byla asi na místě alternativní léčba bylinnými preparáty nahrazujícími hormonální substituci, na rozdíl od léčby nádorů, kde bych alternativní léčbu nedoporučovala.

Přečtěte si: Bylinky, nebo hormony – co pomůže v menopauze?

Jak velkou šanci na vyléčení má žena, která přijde včas, oproti té, u níž se na nádor přijde až v pokročilém stadiu?

Žena, která přijde včas a má malý nádor, který nemá špatné biologické vlastnosti, má naději na úplné vyléčení. Ty ženy chodí na pravidelné kontroly, takže jednou za rok si zažijí stres z kontrolních vyšetření, ale většinou je to v pořádku. Ve Švédsku došlo ke snížení úmrtnosti o 30 % právě díky screeningu. U nás běží deset let, sbírají se data, efekt ještě není kompletně vyhodnocen.

Zažila jste někdy opravdu odstrašující případ?

Moje úplně první setkání s nádorem prsu bylo na medicíně, při praxi na chirurgické ambulanci. Přišla paní kolem 60 let a měla prso úplně vstřebané, nádor ho prorostl a byl rozpadlý, kůže porušená, vytékala z toho všelijaká tekutina… paní si to sypala framykoinem. Taková stadia se teď už skoro neobjeví, i když čas od času… ale když to srovnám s dobou před takovými deseti lety, tak těchto nádorů ubylo.

Ale jednou jsem zažila paní, která měla poměrně velká prsa, jedno úplně prorostlé nádorem, už se to rozpadalo a opravdu to páchlo – ošklivé přirovnání jak bolavá noha. Vůbec nechápu, jak ta žena s tím mohla tak dlouho chodit. Přežívala asi dva roky. Udivuje, že to někdo nechá dojít tak daleko. Když jsme dělali biopsii, bylo to na použití roušky, a to byla žena kolem padesátky, žádná bezmocná stařenka.

Stává se, že starší ženy s bulkou v prsu nikomu nic neřeknou a „léčí“ se samy. Rodina k ní třeba chodí pravidelně, ale ona se před nimi samozřejmě nesvléká. Ví, že tam něco má, a nic jim neřekne. Ono těch nemocí, když jich ke stáru přibyde, je někdy až moc, tak starší člověk mnohdy raději mlčí, aby ho zase někam nevozili, aby neobtěžoval… Z toho důvodu někdy přijdou už pozdě. A to je velká škoda.

Co by pomohlo vám, zdravotníkům, v úspěšnějším boji s rakovinou prsu?

Jediným bojem proti rakovině prsu je právě prevence. Aby ženy chodily včas, aby chodily pravidelně. Jinou zbraň nemáme. Nebo pokud už nechodím, ať se alespoň prohmatávám, a pokud si něco nahmátnu, ať jdu. Je to ale škoda prevenci nevyužít, je tu pro každou ženu. U většiny se nádor neobjeví. Ale když už se nádor objeví, ať se na něj přijde zavčasu, ať se dá léčit. Méně agresivně, méně náročně, než když se dostane do vyššího stadia.

MUDr. Alena Bílková, Ph.D.,
vedoucí lékařka Mamma centra Zelený pruh od ledna 2012. S mamodiagnostikou a screeningem nádorů prsu má dlouholeté zkušenosti z mamografického pracoviště ve FN KV. Působí také jako odborná asistentka na Radiodiagnostické klinice 3. LF UK v Praze.

Mamma centrum Zelený pruh,
mamografické pracoviště na Praze 4, které má od roku 2002 status akreditovaného screeningového mamografického centra. Zabývá se nejen diagnostikou onemocnění prsu, ale také léčbou zhoubných a nezhoubných nádorů prsu (Onkochirurgické oddělení). V ČR patří mezi největší a je současně spolu s Masarykovým onkologickým ústavem v Brně jedním z dvou pracovišť v zemi zařazených do mezinárodní databáze center Breast Centres Network, což jsou pracoviště specializovaná na diagnostiku a léčbu rakoviny prsu. Tým lékařek a radiologických asistentek ročně vyšetří více než 30 000 žen.

Autor článku

Redaktorka, editorka, dlouholetá šéfredaktorka serveru Vitalia.cz (do června 2022)

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