S vámi chci rodit! Přirozený porod s porodní asistentkou, oficiálně a bezpečně

24. 5. 2019

Sdílet

V nemocnici Na Bulovce mají ženy již od jara možnost vybrat si přirozený porod s porodní asistentkou. Za „svou“ porodní asistentku si mnohé rády i připlatí, vyplývá ze zkušeností Centra porodní asistence. A ukazuje se také, že zásahy do porodu a medikace tu obvykle nejsou potřeba.

Centrum porodní asistence (CPA) v Nemocnici Na Bulovce funguje od února letošního roku a zájem o něj zřejmě předčí očekávání. Dal se ale předpokládat, vzhledem k tomu, že se stále více volá po přirozených porodech, intimitě prostředí a dalších věcech, které přispívají k hladkému průběhu zrození nového života.

O co jde? Laicky by se dalo říct, že na půdě nemocnice mohou ženy rodit přirozeně, jen v doprovodu porodní asistentky. V klidu, bez (mnohdy zbytečných) zásahů, s respektem k soukromí.

„Potřeba změnit přístup k vedení fyziologického porodu je vnímána nejen rodičkami, ale i odbornou veřejností. CPA následuje evropský trend, je odrazem rostoucí poptávky po respektujícím porodnictví, zvýšení soukromí a komfortu rodičky i jejího doprovodu při porodu. Jde o zásadní krok ve změně pohledu na porodní péči i v přístupu k rodičce a novorozenci,“ říká tisková mluvčí Nemocnice Na Bulovce Simona Krautová.

Záznamy hovoří jasně

Za poměrně krátkou dobu existence CPA ještě neexistují oficiální čísla, která by doložila, jak moc prostředí nebo osobnost porodní asistentky může probíhající porod ovlivnit. Podle Jindřišky Foldynové, která stála u jeho zrodu a patří k porodním asistentkám, které tu působí, je ale už teď jasně vidět, že termín „hladký porod“ tu je v praxi běžná věc.

Galerie: Centrum porodní asistence na Bulovce

„Vedeme si své záznamy, zda porod potřeboval medikaci, jestli bylo třeba volat lékaře, zajímá nás i zpětná vazba maminek,“ říká Jindřiška Foldynová. „Od února, kdy jsme otevřeli, ještě žádná z ‚mých‘ maminek nepotřebovala u porodu medikaci. Nejsem zastánce domácích porodů, jsem ráda, že mám při práci za sebou tým lékařů a vybavení, protože stát se může cokoliv. Ale když jde porod dobře, není nic z toho třeba. Intervence a zásahy jsou pak zbytečné.“

Ženy nepotřebují luxus, spíš péči

Podle tiskové mluvčí Simony Krautové tu od počátku fungování CPA odrodilo už čtyřicet žen. To je velké číslo i vzhledem k tomu, že se zatím rodí v klasickém „porodnickém prostředí“, tedy na sále.

„Na podzim 2019 se porody přesunou z porodního sálu do dvou nově vzniklých porodních apartmánů. Tyto apartmány s vlastním sociálním vybavením a domácí atmosférou budou umístěny v areálu porodnice,“ říká Simona Krautová.

„Těhotné ženy se ptají, zajímají, staniční sestra vyřizuje každý den pět až sedm telefonátů na téma porodu v CPA,“ dodává Jindřiška Foldynová. „Rodičky se chtějí přeregistrovat z jiných porodnic, často volají třeba už kolem 20. týdne těhotenství.“

A evidentně je neláká hezky zařízený pokoj, ale spíš možnost nerodit „medicínsky“ tak, jak bylo v České republice donedávna zavedené.

Kdo chce rodit v CPA?

Podle Jindřišky Foldynové se asi nedá najít společný znak všech zájemkyň. Jsou to ale jednoduše ty, které o svém porodu přemýšlejí a chtějí si ho – jakkoliv to může někomu znít podivně – užít. Některé mají špatnou zkušenost z prvního porodu, jiné prostě chtějí rodit přirozeně.

„Ty ženy chtějí mít na porod především klid,“ shrnuje porodní asistentka a dodává, proč je klid a také důvěra v personál důležitý: „95 % porodu je v hlavě. Když k němu pořád někdo chodí, otvírají se dveře, někdo se stále na něco ptá, žena se vyšetřuje po pěti minutách – to všechno může porod zastavit a nastávají komplikace. Moje zkušenost říká, že když se zbytečně nezasahuje, většina žen rodí krásně.”

Jedna skupina žen je ale mezi klientelou CPA i za krátkou dobu existence už zavedená – jsou to těhotné ze zahraničí. „V Americe, Holandsku, Norsku a dalších zemích je totiž běžné mít svou soukromou porodní asistentku,“ shrnuje Jindřiška Foldynová. 

Jak to vypadá v praxi

V CPA mohou prozatím rodit ženy, které jsou v Nemocnici Na Bulovce k porodu registrované. Fakticky tak vstupují do jedněch dveří, ale za nimi už mají dvě možnosti – klasický porod v klasické porodnici, nebo právě porod jen s porodní asistentkou. Těhotné přicházejí v 35. nebo 36. týdnu podle toho, kdy je odešle gynekolog ze své ambulantní péče.

„Maminka přijde do první fyziologické poradny, kde ji vyšetří lékař,“ popisuje sled událostí Jindřiška Foldynová. „Sepíše anamnézu, provede ultrazvukové vyšetření. Maminka pochopitelně musí splňovat předem daná kritéria z hlediska zdraví jejího i plodu.“

Po tomto úvodu už těhotná může přejít do péče porodní asistentky. Poradna tu funguje jednou týdně a začíná to být málo. V této chvíli má těhotná také možnost nadstandardu – za sedm tisíc korun si může vybrat „svou“ porodní asistentku. Z veřejného zdravotního pojištění se o ni jinak stará ta, která má zrovna službu.

Co a za kolik u porodu? Zdarma i nadstandard

  • Balíček porodních služeb v CPA  – nadstandardní péče – vyjde na 7000 Kč. Žena si vybere svou porodní asistentku, která se o ni před porodem stará, přijede k příjmu do porodnice a je pak po celou dobu porodu se ženou na místě.
  • I bez této investice se do CPA těhotná může registrovat (ta, která je registrovaná k porodu v Nemocnici Na Bulovce).
  • Změna je pak v tom, že příjem k porodu a péči na porodním sále zajišťuje porodní asistentka, která je právě ve službě.

S vámi chci rodit

Na webových stránkách si těhotná může projít seznam porodních asistentek s krátkými medailonky a fotkami a vybrat si podle svých sympatií. I ty jsou důležitější, než by se mohlo zdát.

„Pro porodní asistentku to znamená být až do porodu permanentně na telefonu,“ říká Jindřiška Foldynová. „S těhotnou už se pak sama domlouvá, kdy a proč se uvidí.“

A telefonáty jsou také na denním pořádku – těhotné mají v závěru jiného stavu spoustu otázek třeba na věci, které porodní asistence v běžném provozu připadají naprosto běžné a není třeba o nich automaticky mluvit. A díky takovým telefonátům se objevuje vzájemná důvěra a sice krátkodobý, ale přece jen vztah mezi ženou a její „porodní průvodkyní“. A to je další významný činitel průběhu porodu.

 

„Když ženě něco řeknu nebo poradím, postupně mi začne věřit. Ví, proč se věci právě takhle dějí, probereme spolu možnosti,“ doplňuje Jindřiška Foldynová a dodává, že tohle vše se přesune i k porodu.

Smát se. Až do finále

„Žena je ta, která rodí, já bolesti nemám. Mohu jí dát návrhy, mluvíme o nich a sama se rozhodne, co a jak chce,“ popisuje porod v CPA porodní asistentka. „My jsme jen prostředníci. Ale poté, co jsme se vzájemně poznaly, si je žena mnohem jistější, ve správné chvíli mi důvěřuje. A to je zásadní.“

Je to návrat ke kořenům, který u většiny žen jen potvrdí to, že rodit umíme (pokud nenastanou nějaké komplikace).

Galerie: Historie porodnictví

A mnoha komplikacím umí zabránit právě klid, důvěra a intimní prostředí. Pak se může stát, že těhotná porodí dokonce s úsměvem.

„Dlouho nebyla možnost rodit takto přirozeně a jsem ráda, že tu konečně je. A že to třeba z mé strany není už ‚jen‘ služba známým, kterým jsem k porodu chodila dříve. Určitě nás čeká rozšiřování týmu, protože s otevřením porodních apartmánů na podzim se zájem o tyto služby určitě ještě zvýší,“ uzavírá Jindřiška Foldynová.

Mnohé ženy asi bude zajímat, zda se do budoucna chystá více takových center. Šance tu jsou: „Centrum porodní asistence Nemocnice Na Bulovce je pilotním projektem, který bude vyhodnocen a zkušenosti budou sdíleny s ostatními nemocnicemi,“ říká Gabriela Štěpanyová, tisková mluvčí ministerstva zdravotnictví. V současné době se dle ní jedná o podobných projektech ve Všeobecné fakultní nemocnici a Thomayerově nemocnici v Praze. „S tímto moderním přístupem se ale bude počítat v rámci všech v budoucnu prováděných rekonstrukcí porodnických pavilonů státních nemocnic,“ slibuje mluvčí.

Autor článku

Zaměřuje se především na problematiku zdravého životního stylu, sportu, nemocí a jejich řešení.

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