Císařské řezy na přání

Sdílet

Autor: Isifa.cz
Česko patří k zemím s nejvyšším počtem císařských řezů v Evropě. Je to nutnost? Nebo móda? Spíš to druhé. Nastávající matky si ovšem často ani neuvědomují, co je čeká.

V ČR se „císařem“ rodí jak na běžícím pásu. Spolu s pohodlností tu hraje svoji roli i fakt, že čeští lékaři si nechtějí kazit statistiky. Ty udávají, že u nás umírá při porodech jen minimum dětí – na tisíc porodů jen čtyři mrtvé děti, což je i ve vyspělé Evropě velký úspěch. Přesto si porod císařským řezem dobře rozmyslete. I když vás budou lékaři přesvědčovat.

Sylvia Maděričová bude rodit každou chvíli. Přesněji: její chlapeček se chystá na svět 18. července. Je otočený koncem pánevním, čímž se Sylvia zařadila mezi čtyři ze sta českých žen, které mají dítě v děloze uložené obráceně.


Autor: Agentura SXC

Ještě do poloviny padesátých let to byl normální fyziologický porod. Pro ženu o něco těžší, protože trvá déle, je namáhavější a porodník musí být víc ve střehu, protože dítě si někdy v porodních cestách neporadí samo a potřebuje pomoc zvenčí.

Porodní báby však takový porod běžně uměly odrodit. Jenže pak uběhlo pár desetiletí, kdy socialistickému zdravotnictví záleželo víc na statistikách než na lidech samotných, a z fyziologického porodu se stalo něco nenormálního. U porodu koncem pánevním totiž hrozí víc komplikací a i vyšší riziko úmrtí dítěte či matky, což kazí statistiky.

 „Porody koncem pánevním máme v rodině. Žila jsem tedy v domnění, že stejně jako moje máma a moje babička si holt trochu víc vytrpím, ale dítě porodím normálně. Jenže lékař ve velké pražské porodnici, kam jsem se dlouho předem nahlásila, mě šokoval. Před měsícem mi oznámil, že je už pozdě na to, aby se dítě samovolně otočilo, takže jsem jasná indikace k císaři,“ líčí Sylvia svoje zkušenosti.

A nastal problém. Ona chce rodit normálně, ale porodník to odmítá. „Začali mě zastrašovat. Vypočítávají všechna rizika, kdy se dítě může vzpříčit v porodních cestách a bude pozdě na to jej vytáhnout. Ptají se, jestli chci být tak nezodpovědná matka, že raději porodím mrtvé dítě,“ kroutí hlavou. Sylvii sice vyděsili, ale od přirozeného porodu neodradili.

Mimochodem – Sylvia je celoživotní sportovkyně, svého času dokonce vrcholová, dokonale zdravá, žádné jiné přidružené potíže nemluví pro císařský řez. Jen strach lékařů. Sylvia proto hledá na poslední chvíli porodnici, kde ji nebudou nutit k porodu, jaký nechce.

Podle porodní asistentky Jarmily Kaděrové dělá dobře. „Není nic horšího, než porod, jaký si matka nevybrala a do jakého byla dotlačena někým jiným.“

Porod pro celebrity

Porodnice v krkonošském Vrchlabí je jednou z mála u nás, která stále ještě bere porody koncem pánevním jako normální. A ženy takto nechá rodit bez přemlouvání k operaci, jíž císařský řez je.

Porodník Richard Vanko, primář porodnice ve Vrchlabí, k tomu říká, že pokud u ženy nejsou žádné další vážnější nemoci, jde o porod jako každý jiný. Jen se při něm musí dávat mnohem větší pozor, protože dítěti jde hlavička až nakonec a porodník tak leckdy musí řešit nenadálé situace a umět reagovat rychle ve chvíli, kdy se dítěti v porodních cestách vzpříčí ruka či rameno, a vytáhnout ho. Pak jde skutečně o vteřiny, aby se dítě neudusilo. A to je přesně to, čeho se moderní velké porodnice bojí. Pozorný lékař to však zvládne bez potíží. Otázka je, jestli si takto chce přidělávat práci. A odpověď v dnešním Česku zní: ne, nechce.

I podle Vankových zkušeností je totiž obvykle porod koncem pánevním, stejně jako věk ženy nad třicet let, u nás automatickou indikací k porodu císařem. Nikdo o tom s ženou nedebatuje. S výjimkou Vrchlabí. Lékaři si tak usnadňují práci.

A pak jsou ženy, které si chtějí usnadnit okamžik zrození. U nás platí, že ženě, která chce cíleně rodit císařem, stačí, aby byla „celebrita“: tedy něčí známá, herečka, zpěvačka, důležitá podnikatelka… Pak se jen zmíníte porodníkovi, že byste ráda porod císařem, a lékař to rád zařídí. Nebo, ale o tom se mezi matkami jen mluví a důkaz na to není žádný, to spraví deset tisíc.

Čtěte téma: Doktoři berou. A hlupáci dávají

To se prý musí, něco šoupnout. Zdálo by se, že když bohy v bílém nepodmáznete, nechají vás bídně umřít. Myslím, že nenechají. 

Lékař sice stále ještě potřebuje k porodu císařským řezem indikaci – tedy zdůvodnění, proč jej navrhuje, aby ho pojišťovna zaplatila. Ale otékající kotníky – a tudíž nedostatečná činnost oběhového systému a obava z jeho selhání při porodu – jsou také důvodem. Obzvlášť při vyšším věku rodičky, což se dnes týká řady matek.

Nemocnici to vylepší finance. Porod císařem je totiž asi pětinásobně dražší – nemocnice za něj dostane od pojišťovny mnohem lépe zaplaceno. A ještě ke všemu pro ni obvykle znamená méně komplikací u dítěte a tudíž vylepšení statistik živě narozených dětí.

Vadilo by vám, kdyby se vaše dítě mělo narodit císařským řezem?

Přesto pozor: jde o vážnou operaci!

Císařské řezy se jmenují po manželkách císařů, jimž se dělaly proto, aby se coby tehdejší celebrity uchránily porodních bolestí.


Autor: Isifa.cz

Jenže pozor: císařský řez je vážná operace. Ano, zrození dítěte je takto nesrovnatelně rychlejší: místo několikahodinového až dvoudenního porodu se dítě narodí zhruba za patnáct minut. Bez bolestí. Tedy zpočátku. Ale jde o operaci, u níž je nutné mít anesteziologa, kde hrozí riziko alergických reakcí, anafylaktického šoku, sepse, okamžitého úmrtí ženy, a kde se nedá odhadnout, jak dlouho bude trvat proces hojení. A ten je velmi dlouhý.

U normálních rodiček trvá regenerace po porodu obvykle jen tradičních šest neděl. U porodu císařem je to rok a půl. Ale to vám předem řekne jen málokterý lékař.

Půl roku po porodu císařem nesmíte cvičit, namáhat se, nosit dítě v náručí, jinak hrozí, že jizva praskne. Bolí vás každý krok. Lékař při pronikání do dělohy přeřezává sedm vrstev kůže a těla. Všechny pak musí sešít. To není legrace. Nikdo vám také předem neřekne, že se nejméně tři dny po porodu císařem nebudete vůbec schopná postarat o dítě. Nevstanete k němu, nepřebalíte ho. Nemůžete ho mít u sebe na rozdíl od maminek, které nerodily císařem.

Další půlrok se stále ještě musíte hlídat a běžná dovolená nepřichází v úvahu. Příliš byste namáhala břišní svaly. Ženy s poloviční anestezií, tedy od pasu dolů, často trpí několik měsíců úpornými bolestmi hlavy, které způsobil pohyb po částečné anestezii. Je to stejné, jako kdyby vám někdo chtěl odříznout zaživa polovinu hlavy.

A také: nahá už nikdy nebudete vypadat tak hezky jako dřív, protože jizva, byť měří jen deset centimetrů a je v úrovni kalhotek, je stále jizvou a kůže se nikdy nevrátí do původní podoby.

Rok a půl po porodu císařem nesmíte znovu otěhotnět. Jizva na děloze se hojí nejméně půl roku, a nelze ji nejméně další rok zatěžovat dalším roztahováním a porodem. Pak hrozí, že praskne a žena i dítě zemře,“ popisuje gynekolog Miloslav Pavlica. To je další věc, kterou vám porodník předem neřekne – že na rok a půl až dva můžete zapomenout na to, že stvoříte sourozence k novorozenci. Děti od sebe budou vzdáleny nejméně tři roky.

Stejné je to s antikoncepcí – nitroděložní tělísko vám nikdo nenasadí také rok a půl až dva ze stejného důvodu. A matky rodící císařem jen těžce kojí, protože mléko se spouští později, a ženy o něj i rychleji přicházejí. Hormonální hospodaření těla zkrátka nefunguje tak dobře, jak by mělo. Také podle některých psychologů je vztah s dítětem narušený, protože žena po porodu nemá možnost dítě přivinout k tělu okamžitě.

Císařský řez je vážná věc. „Ženy si často myslí, že porod císařem je lepší, rychlejší a jednodušší. Zpočátku jistě ano. Porodní bolesti je minou a své dítě vidí zdravé a živé už za čtvrt hodiny. Ale komplikace, které se pak mohou přidružit, jsou tak vážné, že normální porod je procházka růžovou zahradou,“ říká anesteziolog Jiří Konvalina.

„Dvanáct hodin po porodu císařem, jinak bezproblémovém a bezbolestném, jsem se ale stále ještě nemohla ani hnout, sestry mi měly jen měnit plenku. Nevyměnily. Za tu dobu jsem dostala takové opruzeniny, že jsem na dítě neměla náladu, nezajímalo mě, protože mě bolelo ležet, sedět, cokoliv. A léčila jsem se těžkými kortikoidy a hormony ještě půl roku po porodu, takže jsem nesměla nakonec ani kojit,“ popisuje čerstvou loňskou zkušenost Gábina Jelínková, matka třičtvrtěroční holčičky.

Čtěte téma: Rodičku nesmí lékaři odmítnout. Nikdy.

Bojíte se, že vás porodnice pro nával odmítne? Pokud rodíte, musí vás přijmout, jinak porušuje zákon.

Trocha statistiky

V nemocnicích specializovaných na komplikovaná těhotenství není nic zvláštního, pokud se císařem narodí každé třetí dítě. Jsou to porodnice, kde se obtížné porody očekávají, jsou vybaveny neonatologickými jednotkami, obvykle jde o velké fakultní nemocnice.

„Ve všech ostatních menších porodnicích je to však pro ženu varovný signál,“ říká známý porodník z Apolináře Antonín Pařízek.

Ze statistik totiž plyne, že celá čtvrtina českých nemocnic má podíl císařských řezů vyšší než 18 procent, což je hodnota, kterou porodníci považují za normální. Průměr Evropské unie je i přes zvyšující se věk žen prvorodiček stále někde na sedmnácti až dvaceti procentech. Jen Česko vybočuje – jsou u nás porodnice, kde se rodí císařským řezem každé druhé dítě.

Vysvětlení jsou jen dvě. Buď tady lékaři normální porody neumí. A pak nemá smysl sem chodit. Nebo ženám celebritám za peníze vycházejí vstříc a nechají je rodit „snazším“ způsobem. Ani jedno není dobré.

Pomoc a radu najdou ženy na webových stránkách www.jaksekdele­ci.cz. Ty totiž zpracovávají data od všech zdravotních pojišťoven v Česku, pracují jen s tím, co si porodnice nechávají proplatit od pojišťoven. A je tu dobře znát, kde dělají porody císařem jako na běžícím pásu, a kde se pohybují okolo normální hranice.

„V každém případě platí, že dřív, než se necháte přesvědčit lékařem k porodu císařem, ptejte se jej na vše, co vás zajímá. I na další porody. Jen málokterá nemocnice vás po prvním porodu císařem nechá rodit druhé dítě normálně, takže si možná nechtíc vyberete cestu i do budoucna,“ upozorňuje porodní asistentka Jarmila Kaděrová.

Autor článku

Autorka je redaktorkou MF DNES.

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