Bolest žlučníku patří mezi ty nejhorší. Na vině bývají špatné stravovací návyky i vážná onemocnění

14. 6. 2022 7:30
přidejte názor

Bolest žlučníku bývá v mnoha případech způsobena nezdravým stravováním. Přejídání, konzumace dráždivých potravin a dlouhodobé prožívání stresu může způsobit bolestivý zánět žlučníku. Problémy se žlučníkem pak mohou mít velmi vážné důsledky v podobě koliky, ucpání žlučovodů žlučovými kameny či rakoviny. S návštěvou lékaře se vyplatí neotálet, zejména pokud se přidruží další příznaky.

Žlučník: bolest a její příčiny

Co se dozvíte v článku
  1. Žlučník: bolest a její příčiny
  2. Jak poznat bolest žlučníku?
  3. Co na bolest žlučníku pomáhá?
  4. Bolest žlučníku v těhotenství
  5. Bolesti po operaci žlučníku

Žlučník je lokalizován v pravém podžebří v těsné blízkosti jater. Za normálních okolností slouží zdravý žlučník jako zásobárna žluči, která se vytváří v játrech. Za 24 hodin játra vyprodukují až půl litru žluči. Žluč se skládá z vody, žlučových barviv (bilirubin), žlučové kyseliny a cholesterolu.

Po konzumaci jídla odtéká menší množství žluči prostřednictvím žlučovodů do tenkého střeva, kde pomáhá s trávením tuků a podporuje vylučování toxických a odpadních látek z těla.

Pokud je na žlučník vyvíjena extrémní zátěž v podobně přejídání a nezdravého životního stylu, dochází k jeho podráždění, což se projeví bolestmi a dalšími příznaky. Permanentní dráždění žlučníku může vyústit v rozvoj některého z následujících onemocnění:

  • žlučníkové kameny (cholelitiáza),
  • zánět žlučníku,
  • rakovina žlučníku,
  • ucpání vývodu žlučovodu,
  • perforace žlučníku,
  • porucha pohyblivosti žlučových cest (biliární dysfunkce),
  • funkční poruchy žlučníku. [1, 2, 3]

Žlučníkové kameny (cholelitiáza)

Žlučníkové kameny bývají nejčastějším onemocněním žlučníku. Než dosáhnou kameny větší velikosti, probíhá cholelitiáza bezpříznakově. Většina nemocných proto nemá o jejich existenci ani tušení. Žlučníkové kameny vznikají krystalizací cholesterolu a dalších látek nacházejících se ve žluči. Kameny se nachází buď v samotném žlučníku, nebo ve žlučovodech.

Cholelitiáza se vyskytuje častěji u žen než u mužů. V populaci žen po čtyřicítce postihuje až 40 % pacientek. Riziko tvorby žlučových kamenů zároveň zvyšují následující faktory:

Zánět žlučníku

Zánět žlučníku představuje jednu z nejčastějších komplikací, která se přidružuje ke žlučníkovým kamenům. Kromě bolesti se projevuje horečkou a zimnicemi. Někdy může zánět žlučníku vznikat i z jiných příčin:

  • špatná životospráva,
  • bakteriální infekce,
  • šokové stavy po operaci,
  • jiné chronické onemocnění (diabetes, kardiovaskulární choroby). [7, 8]

Jak poznat bolest žlučníku?

Jaké má bolest žlučníku příznaky? Na vážné problémy s tímto orgánem poukazuje silná bolest v pravém podžebří, někdy nazývaná jako žlučníková kolika. Bolest může vystřelovat do zad až k pravé lopatce, případně do oblasti žaludku. K rozvoji žlučníkové koliky dochází přibližně hodinu po konzumaci dráždivého jídla. Onemocnění žlučníku neprovází jen bolest, objevují se i další příznaky:

Problémy na sebe upozorní obvykle až ve chvíli, kdy žlučníkové kameny dorostou do takové velikosti, že ucpou žlučovody. Nespecifické mírné příznaky, jako je nadýmání či říhání, si většina pacientů s onemocněním žlučníku vůbec nespojí.

Obstrukce žlučovodů způsobí, že nemůže žluč ze žlučníku přirozeně odcházet a dochází k jejímu hromadění ve žlučovém měchýři. To může vést až ke žloutence, zánětu jater (hepatitidě) nebo zánětu slinivky břišní (pankreatitidě). [9, 10, 11, 12]

Co vám zabírá na bolest žlučníku?

Co na bolest žlučníku pomáhá?

Bolestem žlučníku lze předcházet zdravým životním stylem. Při mírném podráždění žlučníku mohou pomoct choleretika, což jsou léky podporující tvorbu žluči. Pokud jsou bolesti žlučníku chronické, nezbývá často nic jiného než přistoupit k operativnímu řešení.

Operace žlučníku se provádí laparoskopicky v celkové anestezii. Samotný zákrok obvykle netrvá déle než 60 minut. Po 2–3 dnech je pacient propuštěn z nemocnice. Pak ho čekají ještě 2–4 týdny, kdy musí dodržovat klidový režim a hlavně držet přísnou žlučníkovou dietu.

Žlučníková dieta se také doporučuje osobám, které už někdy v životě měly problémy se žlučníkem. Je založena na vyloučení určitých dráždivých potravin z jídelníčku:

  • smažená, tučná a těžká jídla,
  • uzeniny, sádlo, tučné sýry, smetana,
  • koření a kořeněná jídla,
  • česnek, cibule a nadýmavá zelenina,
  • kakao a čokoláda,
  • luštěniny,
  • rajčata,
  • bobulovité ovoce s drobnými jadérky (rybíz, angrešt, borůvky, maliny, jahody, ostružiny). [13, 14, 15, 16]

Bolest žlučníku: babské rady

Na zklidnění žlučníku dobře působí některé bylinky užívané ve formě čajů. Napomáhají normální funkci jater, žlučníku a trávení obecně:

Bolest žlučníku v těhotenství

Během těhotenství prochází ženské tělo řadou významných změn. Zvýšená hladina progesteronu působí relaxačně na všechny svalové tkáně v těle včetně žlučníku. Z toho důvodu dochází ke zpomalení odtoku žluči. Mění se i chemické složení žluči. Ve žluči těhotných žen se nachází větší množství cholesterolu, obsah žlučových kyselin naopak klesá. Nesmíme zapomenout ani na rostoucí hmotnost nastávající matky.

Těhotné ženy jsou z těchto důvodů mnohem náchylnější k tvorbě žlučníkových kamenů. U většiny žen (zhruba 80 %) probíhá cholelitiáza bezpříznakově. U zbylých 20 % se může objevit žlučníková kolika. Pozitivní zprávou je, že jde obvykle o jednorázový záchvat.

Po porodu, zejména v šestinedělí, se objevují žlučníkové koliky častěji. Důvodem jsou prudké hormonální změny a rychlá redukce hmotnosti. [19, 20, 21]

Bolesti po operaci žlučníku

Trápí vás bolest v podžebří po operaci žlučníku? Ne zcela vzácným problémem, který se objevuje u některých pacientů s chirurgicky odstraněným žlučníkem, je tupá bolest v podžebří připomínající bolesti spojené s tímto orgánem.

Při operaci lékaři odstraňují pouze žlučník, žlučovody zůstávají na místě. Ve žlučovodech se pak mohou formovat žlučníkové kameny způsobující bolesti a stejné obtíže jako před operací. Jako souhrnné označení pro potíže po operaci žlučníku se používá termín postcholecystektomický syndrom. [22, 23]

Zdroje: ncbi.nlm.nih.gov, bmj.com, sciencedirect.com, link.springer.com, researchgate.net, bmcsurg.biomedcentral.com, karger.com, cambridge.org

Co znamená bolest žlučníku?
Bolest žlučníku poukazuje na podráždění tohoto orgánu. Často jde o důsledek konzumace tučných a kořeněných jídel. Bolest žlučníku ze stresu také není žádnou vzácností. Bolesti žlučníku se mohou postupně překlenout ve vážné problémy, jako je cholelitiáza, zánět žlučníku nebo rakovina žlučníku.
Jak poznat bolest žlučníku?
Bolest žlučníku je lokalizována v pravém podžebří. Může vystřelovat až do zad k pravé lopatce nebo do oblasti břicha. K silné bolesti se přidružují i další příznaky, například píchání a napětí v břiše, nadýmání, říhání, nevolnost, poruchy stolice a žluté oční bělmo.
Co dělat, když se objeví bolest žlučníku v těhotenství?
O bolestech žlučníku by měla těhotná žena informovat svého lékaře. Jde bohužel o poměrně častý jev, který se během těhotenství objevuje v důsledku hormonálních a dalších fyziologických změn.
Zabírají na bolest žlučníku babské rady?
Při bolestech žlučníku mohou pomoct bylinkové čaje připravené z bylinek, které se doporučují na problémy s játry, žlučníkem a trávením. Konkrétně jde o smetánku lékařskou, ostropestřec mariánský, mátu peprnou, jablečník obecný, oregano (dobromysl), měsíček lékařský a řepík lékařský.
  • Žádné názory
  • Našli jste v článku chybu?
'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
'; document.getElementById('outstream-iframe').onload = function () { setupIframe(); } replayScreen = document.getElementById('iinfoOutstreamReplay'); iinfoOutstreamPosition = document.getElementById('iinfoOutstreamPosition'); outstreamContainer = document.getElementsByClassName('outstream-container')[0]; setupReplayScreen(); } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if ( location.href.indexOf('rejstriky.finance.cz') !== -1 || location.href.indexOf('finance-rejstrik') !== -1 || location.href.indexOf('firmy.euro.cz') !== -1 || location.href.indexOf('euro-rejstrik') !== -1 || location.href.indexOf('/rejstrik/') !== -1 || location.href.indexOf('/rejstrik-firem/') !== -1) { outstreamDirectPlayed = true; soundAllowed = true; iinfoVastUrlIndex = 0; } if (!outstreamDirectPlayed) { console.log('OUTSTREAM direct'); setUpIMA(true); } else { if (soundAllowed) { const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { console.log('OUTSTREAM sound forbidden'); renderBanner(); }); } } else { renderBanner(); } } } function getWrapper() { let articleWrapper = document.querySelector('.rs-outstream-placeholder'); // Outstream Placeholder from RedSys manipulation if (articleWrapper && articleWrapper.style.display !== 'block') { articleWrapper.innerHTML = ""; articleWrapper.style.display = 'block'; } // Don't render OutStream on homepages if (articleWrapper === null) { if (document.querySelector('body.p-index')) { return null; } } if (articleWrapper === null) { articleWrapper = document.getElementById('iinfo-outstream'); } if (articleWrapper === null) { articleWrapper = document.querySelector('.layout-main__content .detail__article p:nth-of-type(6)'); } if (articleWrapper === null) { // Euro, Autobible, Zdravi articleWrapper = document.querySelector('.o-article .o-article__text p:nth-of-type(6)'); } if (articleWrapper === null) { articleWrapper = document.getElementById('sidebar'); } if (!articleWrapper) { console.error("Outstream wrapper of article was not found."); } return articleWrapper; } function setupDimensions() { outstreamWidth = Math.min(iinfoOutstreamPosition.offsetWidth, 480); outstreamHeight = Math.min(iinfoOutstreamPosition.offsetHeight, 320); } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = directVast; console.log('Outstream DIRECT CAMPAING advert: ' + directVast); videoContent.muted = true; videoContent.volume = 0; outstreamDirectPlayed = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = outstreamWidth; // adsRequest.linearAdSlotHeight = outstreamHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function setupReplayScreen() { replayScreen.addEventListener('click', function () { iinfoOutstreamPosition.remove(); iinfoVastUrlIndex = 0; outstreamInit(); }); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(outstreamWidth, outstreamHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } /** * Handles the ad manager loading and sets ad event listeners. * @param { !google.ima.AdsManagerLoadedEvent } adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } /** * Handles actions taken in response to ad events. * @param { !google.ima.AdEvent } adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: // This is the first event sent for an ad - it is possible to // determine whether the ad is a video ad or an overlay. if (!ad.isLinear()) { // Position AdDisplayContainer correctly for overlay. // Use ad.width and ad.height. videoContent.play(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // This event indicates the ad has started - the video player // can adjust the UI, for example display a pause button and // remaining time. if (ad.isLinear()) { // For a linear ad, a timer can be started to poll for // the remaining time. intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstreamLastError === 303) { if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } break; } } /** * Handles ad errors. * @param { !google.ima.AdErrorEvent } adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstreamLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { renderBanner(); } } function renderBanner() { if (isBanner) { console.log('Outstream: Render Banner'); iinfoOutstreamPosition.innerHTML = ""; iinfoOutstreamPosition.style.height = "330px"; iinfoOutstreamPosition.appendChild(bannerDiv); } else { console.log('Outstream: Banner is not set'); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoOutstreamPosition.remove(); outstreamInit(); } else { return false; } adVolume = 1; return true; } /** * Pauses video content and sets up ad UI. */ function onContentPauseRequested() { videoContent.pause(); // This function is where you should setup UI for showing ads (for example, // display ad timer countdown, disable seeking and more.) // setupUIForAds(); } /** * Resumes video content and removes ad UI. */ function onContentResumeRequested() { videoContent.play(); // This function is where you should ensure that your UI is ready // to play content. It is the responsibility of the Publisher to // implement this function when necessary. // setupUIForContent(); } function onActiveView() { if (outstreamContainer) { const containerOffset = outstreamContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstreamPaused) { adsManager.resume(); outstreamPaused = false; } return true; } else { if (!outstreamPaused) { adsManager.pause(); outstreamPaused = true; } } } return false; } let outstreamInitInterval; if (typeof cpexPackage !== "undefined") { outstreamInitInterval = setInterval(tryToInitializeOutstream, 100); } else { const wrapper = getWrapper(); if (wrapper) { let outstreamInitialized = false; window.addEventListener('scroll', () => { if (!outstreamInitialized) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { outstreamInit(); outstreamInitialized = true; } } }); } } function tryToInitializeOutstream() { const wrapper = getWrapper(); if (wrapper) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstreamInitInterval); outstreamInit(); } } } else { clearInterval(outstreamInitInterval); } } }
OSZAR »