Franz Kafka byl nekuřák, abstinent a vegetarián, přesto ho zabila vážná nemoc

20. 5. 2024

Sdílet

Významného pražského židovského spisovatele, který napsal o tom, jak se Řehoř Samsa proměnil v brouka, si jistě pamatujete ze školy. Letos uplyne 100 let od jeho předčasné smrti ve věku pouhých čtyřiceti let.

Přestože Franz Kafka nekouřil, nepil alkohol, nejedl maso a dbal na zdravý jídelníček, skolila ho jedna z nejnebezpečnějších a nejčastějších nemocí té doby: tuberkulóza. Jak s ní bojoval a jaké byly tehdejší možnosti léčby?

Celý život strávil v Praze, nikdy se neoženil a i přes velmi zdravý životní styl byl odmalička stále nemocný, potýkal se s tělesnou slabostí i duševními potížemi. Franz Kafka byl velmi citlivý mladý muž s přecitlivělou nervovou soustavou. Všechno si hodně bral k srdci, nepříjemné situace se naučil zvládat skrze humor a ironii, ale často se cítil neklidný, slabý, trpěl bolestmi hlavy a nespavostí. Když přišla krize, jeho psychika byla v háji. Od svých dvaceti let se léčil s vážnou chronickou nemocí, která ho nakonec zabila.

Od reality k platonickým láskám

Franz Kafka vystudoval práva, ale pracoval jako úředník v pojišťovně. Jeho práce u pojišťovny byla sice stabilním a prestižním místem, které mu pomáhalo vydělávat dost peněz, otázkou bylo, nakolik jej tato práce vůbec naplňovala. Od reality utíkal k psaní, jakmile našel volný čas. V jeho hlavě se rodily zajímavé myšlenky a úvahy, které rozhodně stálo za to dát na papír. Mezi jeho nejvýznamnější díla patří romány Amerika, Proces a Zámek, oblíbená je také jeho povídka Proměna o muži, který se proměnil v brouka. Jako spisovatel se stal nezapomenutelným. 

Vášnivá láska, smrt dítěte, odcizení. Skladatele Gustava Mahlera nakonec zabila infekce Přečtěte si také:

Vášnivá láska, smrt dítěte, odcizení. Skladatele Gustava Mahlera nakonec zabila infekce

Jeho zájem o zdravý životní styl byl očividný. Nekouřil, nepil, preferoval rostlinnou stravu, nehýřil. Z jídelníčku vyloučil dokonce i kávu. Těžko říct, zda tento nekuřák, abstinent a vegetarián měl i nějaké neřesti. 

Ani ženám až tak neholdoval. I když s nimi navazoval vztahy, byly spíše přátelské, intelektuální a především platonické, dále než k úvahám o možném budoucím sňatku se možná ani nedostal. Viníkem mohl být jeho tyranský otec, jemuž Kafka svůj pocit nedostatečnosti vyčítal. Jednou ze známých a blízkých Kafkových kamarádek, s níž si vyměňoval dopisy, které se dochovaly, byla spisovatelka Milena Jesenská, která zemřela v koncentračním táboře, kam se dostala za svou odbojovou činnost.  

Osudová nemoc: tuberkulóza

Když bylo Kafkovi třiatřicet, projevila se u něj tuberkulóza, která začínala často v nízkém věku. Toto závažné infekční onemocnění nejvíce napadá plíce a projevuje se úporným kašlem a krvácením z dýchacích cest. Nemocný člověk mívá i zvýšenou teplotu nebo horečku, postupně chřadne a hubne, až nakonec umírá. S tuberkulózou ale lze žít spoustu let s mírnějšími fázemi a horším obdobím, kdy je potřeba velmi výrazně omezit standardní aktivitu. Vyléčitelná bez antibiotik však nebyla.

Tuberkulóza velmi výrazně snižuje kvalitu života a v 19. století a na začátku 20. století patřila k nejčastějším příčinám úmrtí. Poté, co se zjistilo, že je tuberkulóza nakažlivá, nemocní lidé se odváželi do sanatorií, kde spousta z nich stejně zemřela.

Císařovna Sissi možná vůbec nebyla anorektička. Dneska by nejspíš dostala úplně novou diagnózu Přečtěte si také:

Císařovna Sissi možná vůbec nebyla anorektička. Dneska by nejspíš dostala úplně novou diagnózu

Zvýšila se také opatření proti šíření nemoci, třeba tím, že bylo přísně zakázáno plivat na ulici. Sanatoria pro chudé, u nichž se díky tělesné slabosti z náročného životního stylu či podvýživy tuberkulóza objevovala nejčastěji, spíše sloužila k izolaci nemocných, kterým se v nich moc kvalitní zdravotní péče nedostávalo. Sanatoria pro bohatší vrstvy měla zajímavé programy pro nemocné a poskytovala nepřetržitou kvalitní lékařskou péči. Franz Kafka měl na sanatoria štěstí i peníze, lékaři mu také doporučovali, aby začal jíst maso, ať trochu zesílí. To však odmítal.

Je podle vás správné, že stát zrušil povinné přeočkování na TBC?

Smrt v Rakousku

S příchodem antibiotik a očkování se postupně podařilo tuberkulózu vymýtit. Do té doby tuberkulóza stačila zabít milióny lidí. A to také Franze Kafku, který zemřel krátce před svými jednačtyřicátými narozeninami v sanatoriu Dr. Hoffmanna v Kierlingu u Klosterneuburgu. Během svého života často pobýval v různých dalších léčebných ústavech a lázních v Čechách i v zahraničí, například osm měsíců ve slovenské obci Matliare, v Rakousku, Německu, italském Riva del Garda nebo Švýcarsku. Ani během léčby nepřestával psát.

Na popud svého přítele Maxe Broda začal ještě během svého života vydávat některá díla. V podstatě o to ale moc nestál a byl k sobě velmi kritický. Svému příteli Maxi Brodovi také nařídil, aby po jeho smrti veškeré rukopisy spálil. Ten to naštěstí neudělal, a tak jsou jeho díla k dispozici. 

Syfilis, zánět kostí? Stále není úplně jasné, co přivedlo Bedřicha Smetanu k šílenství Přečtěte si také:

Syfilis, zánět kostí? Stále není úplně jasné, co přivedlo Bedřicha Smetanu k šílenství

Proslavil se až po smrti

Max Brod zveřejnil nejen nedokončené romány, ale také veškerou korespondenci a další dochované písemnosti, které nestačil zničit sám Kafka, jeho přítelkyně Dora Diamantová, která s ním byla do posledních chvil, nebo později gestapo. I tak se historikové domnívají, že Kafka sám zničil 90 procent své tvorby, takže Max Brod vydal pouhý zlomek toho, co Kafka skutečně za svůj život napsal.

VIDEO: Franz Kafka a ženy

Zdroj: YouTube

S nástupem fašismu Max Brod Kafkovo dílo uschoval, aby pak další spisy a dopisy vydal po skončení války. Na útěku před nacisty Max Brod odvezl Kafkovy rukopisy do Palestiny, kam emigroval s rodinou v roce 1939, dokud se v roce 1961 nedostaly do rukou Kafkovy neteře, která je odevzdala Bodleian Library v Oxfordu.

Kromě významného vydání Kafkových dopisů Mileně Jesenské v 50. letech později ještě vyšly Kafkovy dopisy Felice Bauerové, která je pět let před svou smrtí dala k dispozici newyorskému Schockenovu nakladatelství. Max Brod pak ještě vydal i Kafkovu biografii a jen díky tomu, že na jeho žádost písemnosti nespálil, poskytl veškerá svědectví o životě a díle tohoto významného autora, který ovlivnil spoustu dalších literátů.

První česká lékařka sice vystudovala medicínu, ale nejdřív mohla pracovat jen jako porodní bába Přečtěte si také:

První česká lékařka sice vystudovala medicínu, ale nejdřív mohla pracovat jen jako porodní bába

Těžký osud židovské rodiny

Do poslední chvíle při odchodu na věčnost pak Franze Kafku doprovázela jeho přítelkyně Dora Diamantová, kterou by si třeba i vzal, kdyby mu dal osud šanci. V březnu roku 1924 náhle ztratil hlas a na klinice profesora Hajka ve Vídni se potvrdilo, že jde o pokročilou tuberkulózu hrtanu. Nemoc zasáhla Kafkův krk natolik, že se ocitl ve zcela beznadějném stavu. Nemohl jíst, pít, natožpak mluvit. S blízkými lidmi a lékaři se dorozumíval psaním na lístečky. Jeho poslední dopis za něj dopsala Dora den před jeho smrtí, když mu došly síly.

Ale ani k jeho dalším sourozencům nebyl osud milosrdný. Franz Kafka byl nejstarší ze šesti sourozenců. Dva jeho bratři zemřeli v dětském věku, tři Kafkovy sestry zahynuly v koncentračních táborech, také jeho švagr, neteř a synovec skončili v rukou nacistů. Jeho strýc, vážený lékař, v předvečer transportu do koncentračního tábora raději spáchal sebevraždu. Kdo ví, jak by se Franzi Kafkovi vedlo, kdyby se dožil války. 

Kvíz: Syfilis, tuberkulóza, otrava, nehoda. Co zabilo slavné osobnosti?

Hudební skladatel Bedřich Smetana v pražském muzeu voskových figurín Madame Tussaud

Kvíz: Syfilis, tuberkulóza, otrava, nehoda. Co zabilo slavné osobnosti?

Zdroje: 

Kolektiv autorů. Město K.: Franz Kafka & Praha. Praha: Copa Management 2005

wikipedia.org; novinky.cz; 

Autor článku

Externí redaktorka a copywriterka píšící pro webové i tištěné magazíny. Zaměřuje se na oblast zdraví, historie medicíny, psychologie, filozofie, etikoterapie a alternativní medicíny.

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