Vysoký krevní tlak může být velice nebezpečný. Poznat ho není snadné

9. 5. 2025 10:00
260 nových názorů
ručitel
MUDr. Daniel Petr | Odborný garant článku

Vysoký krevní tlak neboli hypertenze představuje jedno z nejčastějších onemocnění kardiovaskulárního systému. Na jeho vznik může mít vliv mnoho příčin včetně špatného životního stylu. Lidé někdy dokonce této nemoci říkají tichý zabiják, protože spousta pacientů odhalí problém až při náhodné kontrole u lékaře. Základem úspěšné léčby je přitom právě včasná diagnostika.

Krevní tlak a jeho měření

Pod pojmem krevní tlak se ukrývá síla, prostřednictvím které působí protékající krev na stěny tepen. Důležitou roli zde přitom hraje srdce, které plní úkol krevní pumpy a díky svému pulzování rozhání krev do všech částí lidského těla. Hodnota krevního tlaku se pak v různých částech oběhu může lišit, přičemž nejvyšší bývá ve velkých artériích a nejnižší naopak na periferii.

K naměření správných hodnot krevního tlaku slouží tlakoměry, které se soustředí na dva různé údaje. Prvním z nich je horní tlak neboli systolický krevní tlak, který se měří v momentě stahu srdce. Druhým je spodní tlak neboli diastolický krevní tlak, jenž se zaznamenává ve chvíli, kdy se srdeční sval mezi jednotlivými stahy uvolňuje. [1, 2, 34]

Co je vysoký tlak?

Síla, kterou krev působí na stěny tepen, musí být dostatečně velká, aby bylo možné rozvést kyslík po celém těle. Zároveň by však neměla být příliš silná, protože jinak by mohlo dojít k poškození stěny cév, srdce, mozku a dalších orgánů. Je přitom zcela normální, že člověku krevní tlak čas od času kolísá. Pokud ovšem neustále stoupá k vyšším hodnotám, hovoříme o stavu, kterému se odborně říká vysoký krevní tlak nebo také hypertenze.

Vysoký krevní tlak patří mezi civilizační choroby, což konkrétně znamená, že se jedná o nemoc, která se častěji vyskytuje ve vyspělých zemích a je důsledkem moderního městského životního stylu. Sám člověk má tedy na rozvoji obtíží velký podíl, přičemž na vině může být například konzumace nevhodných potravin, kouření, zvýšený příjem alkoholu, stres či nedostatek pohybu. [5, 67]

Hodnoty krevního tlaku

Výsledná hodnota krevního tlaku, jež lékaře zajímá, se skládá ze dvou různých čísel, která jsou navzájem oddělená prostřednictvím lomítka. Vyšší číslo (první hodnota) vyjadřuje systolický tlak, nižší číslo (druhá hodnota) naopak diastolický tlak. Naměřené hodnoty se přitom udávají v torrech neboli mmHg, což je milimetr rtuťového sloupce.

Systolický i diastolický tlak jsou tedy důležitými indikátory správné funkce krevního oběhu a dobrého zdravotního stavu konkrétního pacienta. Podle Státního zdravotního ústavu (SZÚ) lze přitom krevní tlak v případě dospělého člověka posuzovat právě na základě těchto dvou hodnot, a to následujícím způsobem.

Tabulka: Hodnoty krevního tlaku

Druh krevního tlaku Systolický tlak (mmHg) Diastolický tlak (mmHg)
Nízký krevní tlak (hypotenze) < 100 < 70
Optimální krevní tlak 100–119 70–79
Normální krevní tlak 120–129 80–84
Zvýšený krevní tlak 130–139 85–89
Vysoký krevní tlak (hypertenze) > 140 > 90

Pacienty, kteří mají podezření, že je s jejich tlakem něco v nepořádku, často zajímá hlavně to, jaký je ideální krevní tlak a kdy je naopak nutné zpozornět, začít situaci řešit a vyhledat lékaře. Jednoznačně určit, jaký je normální tlak ovšem může být problematické. V úvahu je totiž nutné vzít několik různých kritérií.

Obecně se jako správná hodnota udává 120/80 mmHg, ale to platí pouze pro zdravého dospělého člověka. U malých pacientů by toto číslo mohlo být spíše signálem velkých zdravotních obtíží. Právě proto je nutné hodnotit optimální tlak podle věku, ale i vzhledem k jiným chorobám, kterými pacient trpí.

Tabulka: Krevní tlak podle věku

  Nízký tlak Optimální tlak Vysoký tlak
Kojenec  < 80/45  80/45  > 85/50
Dítě  <110/70  110/70  > 120/80
Muž  <100/60  120/80  > 140/90
Žena  <100/70  120/80  > 140/90
Dospělý s ledvinovým onemocnění  <110/60  110/80  > 120/80
Dospělý s cukrovkou  <110/60  130/80  > 130/80

Kolísavý krevní tlak

Drobné odchylky krevního tlaku v průběhu dne a noci bývají zcela normální, přičemž svůj vliv může mít také psychický stav daného jedince nebo zvýšená fyzická zátěž. Pokud se ovšem hodnota mění s každým novým měřením, a to bez zjevné příčiny, lékaři hovoří o kolísavém krevním tlaku. Ten nejčastěji trápí labilní osoby, které nemají dostatek pohybu. Kolísavý krevní tlak se ale může objevit také vlivem genetických predispozic. [8, 9, 10, 11, 12]

Jaké má vysoký krevní tlak příčiny?

Nemocné často zajímá, co způsobuje vysoký tlak a zda je možné těmto komplikacím nějakým způsobem předcházet. Z výše umístěných tabulek je přitom patrné, že hodnotu krevního tlaku jistým způsobem ovlivňuje pohlaví a věk pacienta. Svou roli ovšem hraje i dědičnost. Dítě rodičů, které trápí zvýšený tlak, proto bude náchylnější k budoucímu rozvoji stejných obtíží.

Jelikož tento zdravotní problém patří mezi civilizační choroby a souvisí se zdravou životosprávou, je jasné, že některé příčiny vysokého tlaku člověk může sám ovlivnit. Mezi rizikové faktory, které zvyšují šance na výskyt obtíží spojených s vysokým tlakem, se řadí například:

  • konzumace nezdravých pokrmů,
  • zvýšený příjem alkoholu,
  • kouření,
  • obezita,
  • chronický stres,
  • nedostatek pohybu,
  • sedavý způsob života,
  • polycystická ovaria,
  • syndrom spánkové apnoe,
  • onemocnění ledvin nebo cukrovka,
  • dlouhodobé užívání kortikoidů,
  • dlouhodobé užívání hormonální antikoncepce.

Jednoznačnou příčinu vysokého krevního tlaku se lékařům podaří identifikovat jen málokdy. Pravděpodobně se totiž jedná o kombinaci většího množství faktorů, přičemž někdy se neprokáže ani jeden z výše zmíněných činitelů. [13, 14, 15, 16]

Jaké má vysoký tlak příznaky?

Vysoký tlak obvykle žádné viditelné příznaky nemá. Často se pak stává, že se v počátcích nemocný vyšším krevním tlakem příliš nezabývá, protože se cítí zdravý a nic ho neomezuje, ani když ví, jaké má jeho krevní tlak hodnoty. To je však na vysokém tlaku zrádné. Pokud pacient včas nezahájí vhodnou léčbu, nemoc se může dále rozvíjet a způsobuje další zdravotní komplikace.

Příznaky vysokého tlaku:

Zatímco někdy mohou být projevy vysokého tlaku na první pohled zjevné, jindy se jedná spíše o nespecifické symptomy, které si pacient s tímto zdravotním problémem nespojí. Typickým příkladem jsou časté bolesti hlavy. U některých pacientů se pak vysoký krevní tlak může hned napoprvé projevit závažnými obtížemi, jako je infarkt myokardu nebo mozková příhoda. [17, 18, 19, 20, 21]

Jaký máte tlak?

Možné komplikace

Kromě toho, že vysoký krevní tlak způsobuje pacientům celou řadu nepříjemných obtíží, může být také jedním z hlavních rizikových faktorů pro rozvoj dalších onemocnění. Sem patří například:

Diagnostika

Důležité je vědět, jak poznat vysoký tlak, aby bylo možné co nejrychleji začít s terapií. K diagnostice vysokého tlaku slouží tonometr (tlakoměr), který může být jak rtuťový, tak i digitální. Pro potvrzení hypertenze se pak provádí také vyšetření krve, moči a očního pozadí. Existuje-li podezření na další zdravotní komplikace, je možné přistoupit i k jiným testům, jako je:

  • CT,
  • echokardiografie,
  • sonografie,
  • magnetická rezonance,
  • zátěžová ergometrie. [26, 27, 28, 29]

Léčba vysokého krevního tlaku

Jak snížit hodnoty tlaku, aby byly opět v normálu? Pokud jde o vhodnou léčbu, zpravidla zahrnuje užívání medikamentů a změnu životního stylu. Farmakoterapie využívá především několik skupin antihypertenziv, která se u pacientů většinou kombinují podle jejich individuálního stavu. Jedná se například o:

  • diuretika,
  • betablokátory,
  • inhibitory ACE,
  • sartany,
  • blokátory kalciových kanálů,
  • centrálně působící antihypertenziva.

Další významnou součástí léčby je samozřejmě změna životního stylu, a to obzvlášť ve chvíli, kdy je tento faktor jedním ze spouštěčů vysokého krevního tlaku. Pacienti by si také měli uvědomit, že léčba těchto komplikací představuje běh na dlouhou trať a neměli by ji přerušovat ani ve chvíli, kdy se hodnoty krevního tlaku vrátí do normálu.

Pokud vás trápí vysoký krevní tlak, důležité je zaměřit se na životosprávu. Jedinou vhodnou prevencí, kterou je možné těmto komplikacím předcházet, je totiž dodržování doporučených režimových opatření. Jak si můžete pomoci sami?

  • Buďte fyzicky aktivní a pravidelně sportujte.
  • Jezte vyváženou stravu bohatou na vitamíny a minerály.
  • Omezte solení, konzumaci polotovarů a nákupy ve fastfoodech.
  • Udržujte optimální body mass index (BMI).
  • Pokuste se vyhnout stresovým faktorům.
  • Omezte konzumaci alkoholu a vyhněte se kouření.

Vysoký krevní tlak je možné alespoň částečně řešit pomocí snížení tělesné hmotnosti. Každý kilogram navíc může totiž hodnotu tlaku výrazně ovlivnit. Pravidelně cvičte, choďte na procházky. Zařaďte do vašeho jídelníčku větší porce ovoce, zeleniny a nízkotučné mléčné výrobky. Tím snížíte množství soli a tuků ve vašem těle. [30, 31, 32, 33, 34]

Kvíz: Co víte o civilizačních chorobách?
Přečtěte si také:

Kvíz: Co víte o civilizačních chorobách?

Jak na vysoký krevní tlak

Do jídelníčku je vhodné zařadit hlavně hořčík a vápník. Vápník je v tomto případě nezbytný pro správnou funkci svalů a působí velmi dobře na srdce a cévy. Pokud máme vápníku v těle nedostatek, organismus si ho bere tam, kde je uložený, tedy povětšinou z kostí. Ideální denní dávka vápníku je kolem 800 mg denně. Pro lepší vstřebávání je vhodné dávku vápníku rozdělit. Například ve 100 g vařené brokolici je polovina denní dávky vápníku pro dospělého.

Vápník se kromě toho nalézá ve větším množství v mléčných produktech, konkrétně ve mléku, jogurtech či sýrech. Pokud ho přijímáte v tekuté podobě, například ve formě mléka, neopomeňte jej před konzumací pořádně protřepat, zabráníte tak usazení vápníku na dně. Jednoduchým způsobem, jak do stravy dostat více vápníku, je do potravin přisypat lžíci odtučněného sušeného mléka.

Hořčík napomáhá k uvolňování svalů, které řídí cévy a vedou tak k lepšímu proudění krve. Zároveň udržuje rovnováhu mezi sodíkem a draslíkem, a to má velký význam pro hodnotu krevního tlaku. Nejlepším zdrojem tohoto minerálu jsou přitom ořechy a luštěniny, můžete ho zakoupit ale i ve formě tablet. Nejlepší doplňky pro doplnění hořčíku.

Při nedostatku hořčíku lze zaznamenat únavu, slabost, nevolnost nebo zvracení, jeho velmi nízká hladina může dokonce vyvolat svalové křeče, záchvaty, brnění a změny srdečního rytmu. Mimo výše zmíněných se za přírodní zdroje hořčíku považují různá semínka, listová zelenina (např. špenát) či celozrnné pečivo. 

Česnek má schopnost rozšiřovat cévy a zlepšuje krevní oběh. Již stavitelé pyramid používali česnek k tomu, aby byli silní a vytrvalí. Lidé často trpí při větším množství užívání česneku poruchami trávení, proto je možné využívat doplňky jako jsou například česnekové kapky.

Vyzkoušejte také hloh, který zvyšuje srdeční energii, a tím pádem i funkci srdce. Jeho úkolem je rozšiřovat tepny a tok krve. Formy, ve kterých můžete zakoupit hloh, jsou různé, a to od prášku přes tablety až po čaj na vysoký tlak. Vhodnými doplňky stravy jsou i kapky na vysoký krevní tlak – FYTOS.

Léčbu vysokého tlaku můžete též podpořit užíváním léků a doplňků stravy, jako jsou například tablety Walmark OptiTensin, či Koenzym Q10. [35, 36, 37, 38, 39, 40, 41]

Zdroje: nemoci.vitalion.cz, tlakoměry.cz, nzip.cz, ikem.cz, mzcr.cz, nhs.uk, my.clevelandclinic.org, medicalnewstoday.com, healthline.com, nhsinform.scot, mayoclinic.org, webmd.com, bonehealthandosteoporosis.org

Jaké hodnoty krevního tlaku se považují za vysoké? 
Ačkoliv se za normální tlak často považuje hodnota 120/80 mmHg, je nutné brát v potaz, že to platí pro dospělého zdravého člověka. U dětí a lidí trpících cukrovkou či onemocněním ledvin se to může výrazně lišit. Za vysoký krevní tlak pak lékaři u dospělých pacientů považují hodnoty vyšší než 140/90, v případě kojenců jsou to však čísla vyšší než 85/50 a u malých dětí hodnoty nad 120/80. 
Jaké má vysoký krevní tlak příčiny? 
Za rozvoj vysokého krevního tlaku mohou být zodpovědné různé rizikové faktory, přičemž nejčastěji se jedná o jejich kombinaci. Svou roli často hraje dědičnost a na vině může být také konzumace nezdravých pokrmů, zvýšený příjem alkoholu, kouření, obezita, chronický stres, nedostatek pohybu, syndrom spánkové apnoe nebo třeba onemocnění ledvin a cukrovka. 
Jaké jsou příznaky vysokého tlaku? 
Vysoký krevní tlak se zprvu manifestuje spíše nenápadně. Mohou se dostavit například bolesti hlavy a závratě, ale mezi časté komplikace patří také únava, dušnost, bušení srdce, pocit tlaku na hrudi, problémy se spánkem, otoky končetin, hučení v uších, krvácení z nosu nebo poruchy vidění. Někdy pak může vysoký krevní tlak u pacientů vyvolat infarkt myokardu nebo mozkovou příhodu. 
Co pomáhá na vysoký krevní tlak? 
Léčba vysokého krevního tlaku obvykle spočívá v užívání medikamentů a změně životního stylu. Léky se většinou kombinují, přičemž nejčastěji jde o diuretika, betablokátory, inhibitory ACE, sartany, blokátory kalciových kanálů nebo centrálně působící antihypertenziva. Dále je nutné dbát na zdravý životní styl, být fyzicky aktivní, konzumovat vyváženou stravu, omezit konzumaci alkoholu, vyhýbat se kouření a udržovat stres na minimu.
Petr (neregistrovaný)

Dobrý den, poslední dobou jsem měl třes v levých končetinách a tak mne internista poslal na sono krkavic, kde bylo vše v pořádku. Už 2.rokem beru Bisoprolol Mylan 2,5mg kvůli vyššímu pulsu. Každý půl rok chodím na EKG holtera a vše je v pořádku. Tlak se mi ale kvůli tomu snížuje ze (vždy naměřených) 120-130/70 i na 105/55 atd, ale není to pravidlem. Od pondělka jsem pocitoval ale změnu. Bylo mi špatně a zamotala se mi hlava. Tlakoměr mi v ten moment naměřil 143/80 55’ a každou chvíli se tlak zvyšoval i na 157/90. Pak se zase pomalu uklidnil. Od té chvíle se kontroluji, tlak jsem od té doby měl zase kolem 120/70, jen dnes večer tlak 140/72 60’. Cítím i tlak v hlavě, třes. Internista mi řekl, že to může být od krční páteře nebo i stresu. Nevím. cigarety už nekouřím, vapuji. Alkohol spíš vůbec. Věk 33 let.

cemr (neregistrovaný)

158/82 je asi vysoký tlak ze - 1.st hypertenze je tak? Za posledního půl roku jsem shodil 15kg a stále hubnu na občasné keto dietě.Merim 185cm a vážil jsem 142kg teď mám 127kg.Alkohol jednou za měsíc či dva láhev či dvě bílého vína,jinak vůbec žádný.Kafe turka pet šest denne a kouřím 30let krabku denne cca..omezit kafe na minimum? Ještě užívám na záda (cid 1st tramadol při bolestech zad.

Dobrý den, ano, hypertenzi 1. stupně bezpochyby máte. Ve vašem případě bude mít káva spíše menší vliv. Zaměřil bych se na pokračování v hubnutí (dobrá práce, mimochodem!), i když je lepší mít dietu dlouhodobě udržitelnou a dbát na dostatečný pohybový režim než mít občasnou ketodietu. Určitě bych se pokusil zanechat kouření, či jej alespoň omezit. Ale největší vliv na váš vysoký tlak bude mít pravděpodobně ta hmotnost.

Pavlinecka (neregistrovaný)

Dobrý den zed má už tak měsíc vysoký tlak 180 ,je to i nezdravý jídelníček a styl nechce na vyšetření je mu 62

Šárka (neregistrovaný)

Dobry den.Jak moc ovlivňuje tlak špatná (mala manzeta)hodno­ty?mela jsem ji tak strašně utazenou,ze jsem ji musela přidržovat.dekuji

  • 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 »