Pupeční a tříselná kýla

Nečekaná zátěž, porod anebo dlouhodobá zácpa. To vše může stát za vznikem nepříjemné kýly, což je označení pro otvor, který nejčastěji vzniká v oslabené břišní stěně či třísle po větším nitrobřišním tlaku. Ačkoli zpočátku nezpůsobuje žádné výrazné obtíže, ve skutečnosti může být velmi nebezpečná. Neléčená kýla má totiž tendenci se zvětšovat a navíc hrozí uskřinutí některého z břišních orgánů.

Kýla, odborně hernia, představuje poměrně častý problém, který se zpravidla objevuje u jedinců s oslabenou břišní stěnou. Nevyhne se ale ani dobře trénovaným sportovcům. Jedná se o vzniklý otvor, skrze který se do podkoží vyklenují vnitřní orgány. Tento typ obtíží se většinou objevuje tam, kde není břišní stěna dostatečně zpevněná. Typicky se jedná o pupek či jizvy po operacích břicha, zejména pokud bylo jejich hojení komplikované.

Kýla se poměrně často objevuje také v tříslech, a to hlavně v případě mužů, jelikož jim v tomto místě procházejí cévy a chámovod vedoucí do varlat. U žen se v oblasti třísel naopak nachází oblý vaz, proto je kýla tohoto typu obvykle netrápí a mnohem častěji zápasí s kýlou pupeční či břišní. V některých případech u nich může vzniknout také takzvaná stehenní kýla, která bývá lokalizována o něco níže než klasická tříselná kýla u mužů.

Co se týče složení kýly, tvoří ji tyto tři části:

  • kýlní vak – vyklenutá pobřišnice (tenká, průsvitná blána, která vystýlá dutinu břišní a obaluje většinu orgánů zde uložených),
  • kýlní branka – defekt či oslabení stěny břišní kudy se orgány dutiny břišní tlačí ven,
  • kýlní obsah – nejčastěji se jedná o střevo, nicméně vyklenovat se mohou kromě slinivky všechny orgány dutiny břišní.

Příčiny kýly

Za vznikem kýly nemusí vždy stát zvedání těžkých břemen, jak si spousta lidí myslí. S predispozicemi k rozvoji těchto obtíží se člověk může už narodit, stačí zdědit sklony pro tvorbu slabšího vaziva. Na vzniku obtíží se pak samozřejmě podílí také faktory zvyšující tlak v dutině břišní. Typicky se jedná o:

  • zácpu,
  • kašel,
  • tlak při močení (u onemocnění prostaty),
  • těhotenství.

Za rozvojem kýly je samozřejmě nutné hledat také zvýšenou fyzickou námahu, převážně tu spojenou se zvedáním těžkých břemen. Kýla je rovněž mnohem častější u obézních lidí, kteří mají oslabenou břišní stěnu. To ovšem neznamená, že vysportovaní jedinci s „pekáčem buchet“ mají nad onemocněním vyhráno. Hernia může samozřejmě potkat i je, jen ne v onom „pekáči buchet“.

Nejběžnější typy kýly

Tříselná kýla

Tříselná kýla, která mnohem častěji trápí muže, obvykle vzniká důsledkem vysoké zátěže, určitou roli ale hrají také vrozené dispozice. A jaké má tříselná kýla příznaky? V počátcích se projevuje pocitem pálení v tříslech, později může pacient nahmatat nebolestivé vyklenutí v oblasti třísla. To může samovolně mizet a při zátěži se znovu objevovat.

Břišní kýla

Jako břišní kýla se označuje každý otvor, který vzniká kdekoli v oblasti břicha krom pupku a třísla. Nejčastěji se jamky tvoří v místě jizvy, kde je místo oslabené. Kýla se v tomto případě projevuje měkkým nebolestným vyklenutím o různé velikosti. Ta je závislá na šířce defektu v břišní stěně.

Pupeční kýla

Jak už název prozrazuje, pupeční kýla se nachází v oblasti pupku, přičemž o něco častěji se vyskytuje u žen. Poměrně častá je například pupeční kýla v těhotenství. Výjimkou však není ani pupeční kýla u dětí, která je důsledkem neuzavření břišní stěny v místě, kde je plod spojen s placentou. Tříselná kýla u dětí vzniká zase především vlivem nedokončeného vývoje, může být rovněž vyvolaná silným pláčem. Pupeční kýla může kromě vyklenutí způsobovat také tlakovou bolest při námaze a pocit nadýmání.

Vzácné kýly

Výše zmíněné kýly patří sice k nejčastěji diagnostikovaným, rozhodně ale nejsou jediné, s kterými se pacienti mohou potýkat, Mezi ojediněle se vyskytující kýly patří:

  • vnitřní kýly (vsunutí orgánu do vývojem dané výchlipky pobřišnice v dutině břišní),
  • brániční kýla (hiátová kýla),
  • kýly svalového dna pánevního,
  • Spiegelova kýla.

Kýla versus diastáza

Podobným způsobem jako kýla pak vniká také diastáza, což je jednoduše řečeno rozestup břišních svalů. Ten vzniká zásadně ve střední čáře nad pupkem, kde jsou svaly břišní stěny pravé a levé strany od hrudní kosti až po pupek spojeny jen můstkem vaziva. Vlivem stejných faktorů jako v případě kýly se tento můstek postupně rozšiřuje z původní šířky přibližně jednoho centimetru na několikanásobek. Často se tak děje například u žen po porodu. Rozestup svalů lze poměrně dobře sledovat při zvedání z lehu, kdy se mezi hrudní kostí a pupkem vyklenuje různě velká část břišní stěny. Vleže diastáza naopak mizí.

Jaké má kýla příznaky?

Kýlu naprostá většina pacientů pozná podle výše popsaného vyklenutí orgánů, tedy po tom, co si na břiše nebo v třísle nahmatají onu bulku, která lze po stisknutí vrátit zpět do dutiny břišní. Zpočátku se bulka objevuje jen při zátěži a zvýšeném nitrobřišním tlaku. Postupem času se ale kýla zvětšuje a vyklenutí se stává trvalé, zejména ve stoje. Při pozici vleže s pokrčenýma nohama může naopak mizet.

Při větších kýlách mohou u některých jedinců vznikat srůsty, které způsobují, že se vyklenuté orgány do břicha nevracejí ani vleže. Typicky se tak děje u šourkových (skrotálních) kýl u mužů, které mohou dosáhnout obřích rozměrů. Naopak při menších kýlách anebo u obézních lidí nemusí být vyklenutí patrné, nemusí jej dokonce nahmatat ani lékař. Při příznacích, jako je například bolest v typické oblasti, a po vyloučení dalších možných příčin, je proto nutné udělat ultrazvuk.

Kromě viditelných projevů se pacienti často potýkají s bolestivostí postiženého místa, a to zejména při námaze. V případě tříselné kýly se může objevit například pálení v třísle, k čemuž dochází hlavně v okamžiku, kdy se hernia tvoří. Vzhledem k tomu, že se v otvoru vyklenují některé vnitřnosti, může způsobovat jejich útlak. Typickým důsledkem je také zužování střeva. To se kromě bolesti může projevovat také přechodnou zácpou či nadýmáním.

Uskřinutí kýly

Specifickou událostí je pak uskřinutí kýly. Jedná se o náhlou situaci, která je způsobená tím, že se část orgánu v kýlní jamce zasekne a přiškrtí. Tím samozřejmě trpí jeho výživa, a pokud se rychle nezakročí, dochází k odumírání tkáně. V případě, že je zaškrceno střevo, dochází k jeho neprůchodnosti. Obojí se pak projevuje:

  • silnou bolestí kýly,
  • tuhostí kýly, která nejde vmáčknout zpátky do břicha,
  • zvracením,
  • křečemi v břiše,
  • zástavou větrů a stolice.

Stav, jakým je uskřinutí, si žádá okamžitou operaci. V případě podezření raději okamžitě vyhledejte lékařskou pomoc.

Kdy vyhledat lékaře?

Pokud se u vás objevila kýlní jamka, je důležité si uvědomit, že i když vás zatím nijak výrazně neobtěžuje, sama od sebe rozhodně nezmizí. Naopak se bude postupem času ještě více zvětšovat, hrozí navíc uskřinutí kýly. Lékaře je proto nutné vyhledat ihned po zjištění obtíží, protože čím menší kýla je, tím lépe se léčí. Odborník s velkou pravděpodobností doporučí operaci kýly, která představuje jediné účinné řešení. Existují sice pomůcky, jako je například kýlní pás, ten ale problém neřeší. Hodí se tedy jen na přechodnou dobu, například před operací, anebo pro starší pacienty, kterým se chirurgický zásah už nedoporučuje.

Operace kýly

Jak bylo naznačeno výše, jediným možným řešením kýly je její operace. Jamku je totiž nutné uzavřít, což jinak než chirurgicky nelze. Obecně patří operace kýly k nejběžnějším operativním zákrokům. V poslední době se k problému stále častěji přistupuje laparoskopickou cestou, která je oproti klasické břišní operaci mnohem šetrnější.

Při laparoskopické plastice, jak se zákroku také říká, je operativní pole zobrazeno pomocí kamery zavedené do místa kýly. To se spravuje pomocí speciální síťky, kterou lékař překryje kýlní jamku a učiní ji neprůchodnou. Ještě před tím je ale nutné obsah kýly vrátit zpět do dutiny břišní.

Než k operaci jako takové vůbec dojde, je třeba udělat předoperační vyšetření, na základě kterého lékař určí operační riziko a také to, zda je pacient vhodný na operaci v režimu jednodenní chirurgie. Zákrok jako takový pak probíhá v celkové narkóze, ve výjimečných případech (například u velmi starých pacientů, u kterých se celková anestezie nedoporučuje) lze provádět operaci s lokálním umrtvením.

Rekonvalescence po zákroku záleží na velikosti obtíží, obvykle však pacient zůstává v nemocnici do druhého dne, přičemž běžné činnosti může vykonávat již v den operace. Mírně větší zátěž se pak doporučuje až s rozestupem 10 až 14 dnů, v případě klasické operace dokonce nejdříve po 6 až 8 týdnech.

Jak kýle předejít?

Jak už to tak s nemocemi bývá, stoprocentně jim předejít nelze. Správným chováním však můžeme pravděpodobnost výskytu obtíží snížit na minimum. V případě kýly je základem prevence dobrý tonus svalů a dostatečná kvalita břišní stěny, na tom lze pracovat i v případě, že ž člověk kýlu má. I při ní lze totiž cvičit. Dobrým příkladem jsou třeba ženy po porodu, u kterých se správnými a pravidelnými cviky dá kýle poměrně účinně předejít. Posilovat břišní stěnu je ale samozřejmě nutné už před porodem a samotným otěhotněním.

Co je to kýla?
Kýla je označení pro jamku, která nejčastěji vzniká v oslabené břišní stěně. Děje se tak zpravidla po větším nitrobřišním tlaku, jenž může být důsledkem zácpy, kašle, tlaku při močení i těhotenství. Za obtížemi může samozřejmě stát také zvýšená fyzická aktivita, převážně pak zvedání velmi těžkých věcí.  
Jaké typy kýl trápí pacienty nejčastěji?
Nejčastěji se pacienti setkávají s pupeční kýlou, která se objevuje v oblasti pupku, s kýlou břišní, kdy se jamka často tvoří přímo v jizvách po operaci břicha, anebo s kýlou tříselní, která trápí převážně muže. Ženy naopak více trpí na kýly prvních dvou typů.
Jaké má kýla příznaky?
Kýlu lze poměrně bezpečně poznat na základě jamky, kterou se vyklenuje kýlní obsah (typicky střevo) ven z dutiny břišní. Postižené místo z počátku většinou nebolí, orgán lze navíc po zatlačení poměrně snadno vrátit zpět dovnitř. K opakovanému vyklenutí pak dochází při větší zátěži. Postupem času se ale jamka zvětšuje a sílí na bolestivosti. Při neléčené kýle navíc hrozí takzvané uskřinutí, kdy dojde k uvíznutí orgánu v jamce a následně i k jeho nedostatečnému krevnímu zásobení. Tímto způsobem může rovněž dojít i k uzávěru střeva.
Jak se kýla léčí?
Jediný způsob, jak kýlu účinně léčit, je operace. Zákrok se v dnešní době provádí převážně laparoskopickou metodou, která je oproti klasické operaci šetrnější, a pacient se po ní uzdravuje v poměrně krátkém čase. V případě, že operaci z nějakého důvodu provést nelze, je možné použít alespoň kýlní pás, který zamezí vyklenutí břišního obsahu. 

Zdroje: palas-athena.cz, nemkyj.cz

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