Zákoník práce - Díl 5 - Pracovní úrazy a nemoci z povolání

Předpis č. 262/2006 Sb.

Znění od 1. 1. 2024

262/2006 Sb. Zákon zákoník práce

Díl 5

Pracovní úrazy a nemoci z povolání

Oddíl 1

Rozsah náhrady škody a nemajetkové újmy a zproštění se povinnosti k náhradě

§ 269

(1) Zaměstnavatel je povinen nahradit zaměstnanci škodu nebo nemajetkovou újmu vzniklou pracovním úrazem, jestliže škoda nebo nemajetková újma vznikla při plnění pracovních úkolů nebo v přímé souvislosti s ním.

(2) Zaměstnavatel je povinen nahradit zaměstnanci škodu nebo nemajetkovou újmu vzniklou nemocí z povolání, jestliže zaměstnanec naposledy před jejím zjištěním pracoval u zaměstnavatele za podmínek, za nichž vzniká nemoc z povolání, kterou byl postižen.

(3) Jako nemoc z povolání se odškodňuje i nemoc vzniklá před jejím zařazením do seznamu nemocí z povolání, a to od jejího zařazení do seznamu a za dobu nejvýše 3 let před jejím zařazením do seznamu.

(4) Zaměstnavatel je povinen nahradit škodu nebo nemajetkovou újmu, i když dodržel povinnosti vyplývající z právních a ostatních předpisů k zajištění bezpečnosti a ochrany zdraví při práci, pokud se povinnosti nahradit škodu nebo nemajetkovou újmu zcela nebo zčásti nezprostí.

(5) Škodou podle tohoto zákona není případná ztráta na důchodu.

§ 270

(1) Zaměstnavatel se zprostí povinnosti nahradit škodu nebo nemajetkovou újmu zcela, prokáže-li, že vznikla

a) tím, že postižený zaměstnanec svým zaviněním porušil právní, nebo ostatní předpisy anebo pokyny k zajištění bezpečnosti a ochrany zdraví při práci, ačkoliv s nimi byl řádně seznámen a jejich znalost a dodržování byly soustavně vyžadovány a kontrolovány, nebo

b) v důsledku opilosti postiženého zaměstnance nebo v důsledku zneužití jiných návykových látek a zaměstnavatel nemohl škodě nebo nemajetkové újmě zabránit,

a že tyto skutečnosti byly jedinou příčinou škody nebo nemajetkové újmy.

(2) Zaměstnavatel se zprostí povinnosti nahradit škodu nebo nemajetkovou újmu zčásti, prokáže-li, že vznikla

a) v důsledku skutečností uvedených v odstavci 1 písm. a) a b) a že tyto skutečnosti byly jednou z příčin škody nebo nemajetkové újmy, nebo

b) proto, že si zaměstnanec počínal v rozporu s obvyklým způsobem chování tak, že je zřejmé, že ačkoliv neporušil právní nebo ostatní předpisy anebo pokyny k zajištění bezpečnosti a ochrany zdraví při práci, jednal lehkomyslně, přestože si musel vzhledem ke své kvalifikaci a zkušenostem být vědom, že si může způsobit újmu na zdraví. Za lehkomyslné jednání není možné považovat běžnou neopatrnost a jednání vyplývající z rizika práce.

(3) Zprostí-li se zaměstnavatel povinnosti nahradit škodu nebo nemajetkovou újmu zčásti, je povinen určit část, kterou nese zaměstnanec, podle míry jeho zavinění; v případě uvedeném v odstavci 2 písm. b) je však povinen zaměstnavatel uhradit alespoň jednu třetinu škody nebo nemajetkové újmy.

(4) Při posuzování, zda zaměstnanec porušil právní nebo ostatní předpisy anebo pokyny k zajištění bezpečnosti a ochrany zdraví při práci, se zaměstnavatel nemůže dovolávat všeobecných ustanovení, podle nichž si má každý počínat tak, aby neohrožoval zdraví své a zdraví jiných.

§ 271

Zaměstnavatel se nemůže zprostit povinnosti nahradit škodu nebo nemajetkovou újmu zcela ani zčásti v případě, kdy zaměstnanec utrpěl pracovní úraz při odvracení škody hrozící zaměstnavateli nebo nebezpečí přímo hrozící životu nebo zdraví, pokud zaměstnanec tento stav úmyslně nevyvolal.

Oddíl 2

Druhy náhrad

§ 271a

Náhrada za ztrátu na výdělku po dobu pracovní neschopnosti

(1) Náhrada za ztrátu na výdělku po dobu pracovní neschopnosti přísluší zaměstnanci ve výši rozdílu mezi průměrným výdělkem před vznikem škody způsobené pracovním úrazem nebo nemocí z povolání a plnou výší náhrady mzdy nebo platu podle § 192 nebo odměny z dohody podle § 194 a plnou výší nemocenského.

(2) Náhrada za ztrátu na výdělku podle odstavce 1 přísluší zaměstnanci i při jeho další pracovní neschopnosti z důvodu téhož pracovního úrazu nebo nemoci z povolání. Průměrným výdělkem před vznikem škody podle věty první je průměrný výdělek zaměstnance před vznikem této další škody. Jestliže před vznikem této další škody příslušela zaměstnanci náhrada za ztrátu na výdělku po skončení pracovní neschopnosti, náhrada za ztrátu na výdělku podle odstavce 1 se zaměstnanci poskytne do výše částky, do které by mu příslušela náhrada za ztrátu na výdělku po skončení pracovní neschopnosti, kdyby nebyl neschopen práce. Za výdělek po pracovním úrazu nebo po zjištění nemoci z povolání se považuje náhrada mzdy nebo platu podle § 192 nebo odměny z dohody podle § 194 a nemocenské.

§ 271b

Náhrada za ztrátu na výdělku po skončení pracovní neschopnosti

(1) Náhrada za ztrátu na výdělku po skončení pracovní neschopnosti nebo při uznání invalidity přísluší zaměstnanci ve výši rozdílu mezi průměrným výdělkem před vznikem škody a výdělkem dosahovaným po pracovním úrazu nebo po zjištění nemoci z povolání s připočtením případného invalidního důchodu pobíraného z téhož důvodu. Ke snížení invalidního důchodu pro souběh s jiným důchodem podle právních předpisů o důchodovém pojištění, ani k výdělku zaměstnance, kterého dosáhl zvýšeným pracovním úsilím, se nepřihlíží.

(2) Náhrada za ztrátu na výdělku podle odstavce 1 přísluší zaměstnanci i při pracovní neschopnosti z jiného důvodu, než je původní pracovní úraz nebo nemoc z povolání; za výdělek po pracovním úrazu nebo po zjištění nemoci z povolání se považuje výdělek, z něhož se stanoví výše nemocenského.

(3) Náhrada za ztrátu na výdělku po skončení pracovní neschopnosti nebo při uznání invalidity podle odstavce 1 přísluší i zaměstnanci, který je veden v evidenci uchazečů o zaměstnání; za výdělek po pracovním úrazu nebo po zjištění nemoci z povolání se považuje výdělek ve výši minimální mzdy platné v den prvního zařazení do evidence uchazečů o zaměstnání. Pobíral-li zaměstnanec před tím, než se stal uchazečem o zaměstnání, náhradu za ztrátu na výdělku po skončení pracovní neschopnosti, přísluší mu tato náhrada po dobu zařazení do evidence uchazečů o zaměstnání v takové výši, ve které mu na ni vzniklo právo za trvání pracovního poměru nebo právních vztahů založených dohodami o pracích konaných mimo pracovní poměr. Po skončení zařazení do evidence uchazečů o zaměstnání se při výpočtu náhrady za ztrátu na výdělku po skončení pracovní neschopnosti nebo při uznání invalidity postupuje u všech poškozených podle odstavce 1.

(4) Dosahuje-li zaměstnanec ze své viny nižšího výdělku než ostatní zaměstnanci vykonávající u zaměstnavatele stejnou práci nebo práci téhož druhu, považuje se za výdělek po pracovním úrazu nebo po zjištění nemoci z povolání průměrný výdělek, kterého dosahují tito ostatní zaměstnanci.

(5) Zaměstnanci, který bez vážných důvodů odmítne nastoupit práci, kterou mu zaměstnavatel zajistil, přísluší náhrada za ztrátu na výdělku podle odstavce 1 pouze ve výši rozdílu mezi průměrným výdělkem před vznikem škody a průměrným výdělkem, kterého mohl dosáhnout na práci, která mu byla zajištěna. Zaměstnavatel zaměstnanci neuhradí škodu do výše částky, kterou si bez vážných důvodů opomenul vydělat.

(6) Náhrada za ztrátu na výdělku po skončení dočasné pracovní neschopnosti přísluší zaměstnanci nejdéle do konce kalendářního měsíce, v němž dovršil věk 65 let nebo do data přiznání starobního důchodu z důchodového pojištění.

§ 271c

Náhrada za bolest a ztížení společenského uplatnění

(1) Náhrada za bolest a ztížení společenského uplatnění se poskytuje zaměstnanci jednorázově, a to nejméně ve výši podle právního předpisu vydaného k provedení odstavce 2.

(2) Vláda stanoví nařízením výši náhrady za bolest a ztížení společenského uplatnění odpovídající vzniklé újmě, způsob určování výše náhrady v jednotlivých případech a postupy při vydávání lékařského posudku včetně jeho náležitostí ve vztahu k posuzované činnosti.

§ 271d

Účelně vynaložené náklady spojené s léčením

Účelně vynaložené náklady spojené s léčením přísluší tomu, kdo tyto náklady vynaložil.

§ 271e

Náhrada věcné škody

Zaměstnanci, který utrpěl pracovní úraz nebo u něhož byla zjištěna nemoc z povolání, je zaměstnavatel povinen poskytnout náhradu za věcnou škodu; ustanovení § 265 odst. 3 platí i zde.

§ 271f

Jednorázová náhrada nemajetkové újmy při zvlášť závažném ublížení na zdraví zaměstnance

Při zvlášť závažném ublížení na zdraví zaměstnance přísluší jeho manželovi, partnerovi51a), dítěti a rodiči jednorázová náhrada vzniklé nemajetkové újmy. Tato náhrada přísluší i dalším osobám v poměru rodinném nebo obdobném, které újmu zaměstnance pociťují jako vlastní újmu.

Oddíl 3

Druhy náhrad při úmrtí zaměstnance

§ 271g

Náhrada účelně vynaložených nákladů spojených s léčením a náhrada přiměřených nákladů spojených s pohřbem

(1) Náhrada účelně vynaložených nákladů spojených s léčením a náhrada přiměřených nákladů spojených s pohřbem přísluší tomu, kdo tyto náklady vynaložil. Od přiměřených nákladů spojených s pohřbem se odečte pohřebné poskytnuté podle zvláštního právního předpisu.

(2) Náhradu přiměřených nákladů spojených s pohřbem tvoří výdaje na zřízení pomníku nebo desky do výše nejméně jedenapůlnásobku průměrné mzdy v národním hospodářství zjištěné za první až třetí čtvrtletí kalendářního roku předcházejícího kalendářnímu roku, ve kterém na tuto náhradu vznikne právo; výše této náhrady se zaokrouhluje na celé stokoruny nahoru. Náhradu přiměřených nákladů spojených s pohřbem tvoří dále výdaje účtované za pohřeb, hřbitovní poplatky, výdaje na úpravu pomníku nebo desky, cestovní výlohy a jedna třetina obvyklých výdajů na smuteční ošacení osobám blízkým.

(3) Výši průměrné mzdy zjištěné podle odstavce 2 vyhlásí Ministerstvo práce a sociálních věcí na základě údajů Českého statistického úřadu sdělením uveřejněným ve Sbírce zákonů.

§ 271h

Náhrada nákladů na výživu pozůstalých

(1) Náhrada nákladů na výživu pozůstalých přísluší pozůstalým, kterým zemřelý zaměstnanec výživu poskytoval nebo byl povinen poskytovat, a to do doby, do které by tuto povinnost měl, nejdéle však do konce kalendářního měsíce, ve kterém by zemřelý zaměstnanec dosáhl 65 let věku.

(2) Náhrada nákladů podle odstavce 1 přísluší pozůstalým ve výši 50 % průměrného výdělku zaměstnance, zjištěného před jeho smrtí, pokud výživu poskytoval nebo byl povinen poskytovat jedné osobě, a 80 % tohoto průměrného výdělku, pokud výživu poskytoval nebo byl povinen poskytovat více osobám. Od částek připadajících na jednotlivé pozůstalé se odečte důchod přiznaný pozůstalým z důvodu smrti zaměstnance. K případnému výdělku pozůstalých se nepřihlíží.

(3) Při výpočtu náhrady nákladů na výživu pozůstalých se vychází z průměrného výdělku zemřelého zaměstnance; náhrada nákladů na výživu všech pozůstalých nesmí však úhrnem převýšit částku, do které by příslušela zemřelému zaměstnanci náhrada za ztrátu na výdělku podle § 271b odst. 1, a nesmí být poskytována déle, než by příslušela zemřelému zaměstnanci podle § 271b odst. 6.

§ 271i

Jednorázová náhrada nemajetkové újmy pozůstalých

(1) Jednorázová náhrada nemajetkové újmy pozůstalých přísluší

a) manželovi nebo partnerovi51a) zemřelého zaměstnance,

b) dítěti zemřelého zaměstnance a

c) rodiči zemřelého zaměstnance.

(2) Jednorázová náhrada nemajetkové újmy přísluší každému pozůstalému podle odstavce 1 nejméně ve výši dvacetinásobku průměrné mzdy v národním hospodářství zjištěné za první až třetí čtvrtletí kalendářního roku předcházejícího kalendářnímu roku, ve kterém právo na tuto náhradu vzniklo; je-li náhrada vyplácena oběma rodičům, vyplatí se každému z nich polovina této částky. Výše jednorázové náhrady nemajetkové újmy pozůstalých se zaokrouhluje na celé stokoruny nahoru.

(3) Jednorázová náhrada vzniklé nemajetkové újmy přísluší i dalším osobám v poměru rodinném nebo obdobném, které újmu zaměstnance pociťují jako vlastní újmu.

(4) Výši průměrné mzdy zjištěné podle odstavce 2 vyhlásí Ministerstvo práce a sociálních věcí na základě údajů Českého statistického úřadu sdělením uveřejněným ve Sbírce zákonů.

§ 271j

Náhrada věcné škody

Náhrada věcné škody přísluší dědicům zaměstnance; ustanovení § 265 odst. 3 platí i zde.

Oddíl 4

Společná a zvláštní ustanovení o pracovních úrazech a nemocech z povolání

§ 271k

(1) Pracovním úrazem pro účely tohoto zákona je poškození zdraví nebo smrt zaměstnance, došlo-li k nim nezávisle na jeho vůli krátkodobým, náhlým a násilným působením zevních vlivů při plnění pracovních úkolů nebo v přímé souvislosti s ním (§ 273 a 274).

(2) Jako pracovní úraz se posuzuje též úraz, který zaměstnanec utrpěl pro plnění pracovních úkolů.

(3) Pracovním úrazem není úraz, který se zaměstnanci přihodil na cestě do zaměstnání a zpět.

(4) Nemocemi z povolání jsou nemoci uvedené ve zvláštním právním předpisu.

§ 271l

Náhrada za ztrátu na výdělku po dobu pracovní neschopnosti a náhrada za ztrátu na výdělku po skončení pracovní neschopnosti z téhož důvodu jsou samostatná práva, která nepřísluší vedle sebe.

§ 271m

(1) Při zjišťování průměrného výdělku pro účely náhrady škody při pracovních úrazech nebo nemocech z povolání je rozhodným obdobím předchozí kalendářní rok, je-li toto rozhodné období pro zaměstnance výhodnější.

(2) Náhradu za ztrátu na výdělku a náhradu nákladů na výživu pozůstalých je zaměstnavatel povinen vyplácet pravidelně jednou měsíčně, pokud nebyl dohodnut jiný způsob výplaty.

§ 271n

(1) Jde-li o náhradu škody nebo nemajetkové újmy při nemoci z povolání, má zaměstnavatel, který škodu nebo nemajetkovou újmu nahradil, právo na náhradu vůči všem zaměstnavatelům, u nichž postižený zaměstnanec pracoval za podmínek, za nichž vznikla nemoc z povolání, kterou byl postižen, a to v rozsahu odpovídajícím době, po kterou pracoval u těchto zaměstnavatelů za uvedených podmínek.

(2) Jde-li o jinou škodu nebo nemajetkovou újmu na zdraví než z důvodu pracovního úrazu nebo nemoci z povolání, platí pro způsob a rozsah její náhrady ustanovení o pracovních úrazech.

§ 271o

U zaměstnance, který je v době pracovního úrazu nebo zjištění nemoci z povolání v několika pracovních poměrech nebo je činný na základě dohody o práci konané mimo pracovní poměr, se při stanovení výše náhrady za ztrátu na výdělku vychází z průměrných výdělků dosahovaných ve všech těchto základních pracovněprávních vztazích, a to po dobu, po kterou by mohly trvat.

§ 271p

(1) Zaměstnanci, který utrpí pracovní úraz nebo u něhož byla zjištěna nemoc z povolání v pracovním poměru sjednaném na dobu určitou nebo při výkonu práce na základě dohody o práci konané mimo pracovní poměr uzavřené na dobu určitou, přísluší náhrada za ztrátu na výdělku jen do doby, kdy měl tento základní pracovněprávní vztah skončit. Po této době přísluší náhrada za ztrátu na výdělku, jestliže je možné podle okolností předpokládat, že postižený zaměstnanec by byl i nadále zaměstnán. Ostatní práva vyplývající z povinnosti nahradit škodu nebo nemajetkovou újmu způsobenou pracovním úrazem nebo nemocí z povolání tím nejsou dotčena.

(2) Utrpí-li pracovní úraz nebo byla-li zjištěna nemoc z povolání u poživatele starobního důchodu nebo invalidního důchodu pro invaliditu třetího stupně, přísluší mu náhrada za ztrátu na výdělku po dobu, pokud nepřestal být zaměstnán z důvodů, které nesouvisí s pracovním úrazem nebo nemocí z povolání; nepracuje-li z důvodů, které souvisí s pracovním úrazem nebo nemocí z povolání, přísluší mu náhrada za ztrátu na výdělku po dobu, po kterou by vzhledem ke svému zdravotnímu stavu před pracovním úrazem nebo nemocí z povolání mohl pracovat. Ustanovení § 271b odst. 6 platí i zde.

§ 271q

Práva vyplývající z § 271g až 271j nejsou závislá na tom, zda zaměstnanec před svou smrtí ve stanovené lhůtě právo na náhradu škody nebo nemajetkové újmy uplatnil.

§ 271r

Způsob a výši náhrady škody nebo nemajetkové újmy je zaměstnavatel povinen projednat bez zbytečného odkladu s odborovou organizací a se zaměstnancem.

§ 271s

(1) Soud může výši odškodnění stanovenou právním předpisem (§ 271c a 271i) přiměřeně zvýšit.

(2) Soud zohlední při určení výše jednorázové náhrady nemajetkové újmy pozůstalých podle § 271i přiznanou výši jednorázové náhrady nemajetkové újmy při zvlášť závažném ublížení na zdraví zaměstnance podle § 271f.

§ 271t

Nepromlčují se práva zaměstnance na náhradu za ztrátu na výdělku z důvodu pracovního úrazu nebo nemoci z povolání nebo jiné škody nebo nemajetkové újmy na zdraví než z důvodu pracovního úrazu nebo nemoci z povolání a práva na náhradu nákladů na výživu pozůstalých. Práva na jednotlivá plnění z nich vyplývající se však promlčují.

§ 271u

(1) Změní-li se podstatně poměry poškozeného, které byly rozhodující pro určení výše náhrady, může se poškozený i zaměstnavatel domáhat změny v úpravě svých práv, popřípadě povinností.

(2) Vláda vzhledem ke změnám, které nastaly ve vývoji mzdové úrovně a životních nákladů, upraví nařízením podmínky, výši a způsob náhrady za ztrátu na výdělku příslušející zaměstnancům po skončení pracovní neschopnosti vzniklé pracovním úrazem nebo nemocí z povolání, a to zpravidla s účinností od počátku kalendářního roku; to se vztahuje i na náhradu nákladů na výživu pozůstalých.

Skrýt změny zákona Legenda text přidán text vypuštěn
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 »