Od kdy lze zaměstnanci přiznat a vyplácet osobní ohodnocení jako navýšení základního platu?

3. 4. 2025
Doba čtení: 7 minut

Sdílet

Nástěnka s nápisem a fotkou zaměstnanec měsíce
Autor: Veselíková s využitím DALL-E
Lze přiznat osobní příplatek zaměstnanci ve státní a veřejné správě už před skončením zkušební doby? A jak se pravidla pro osobní příplatek změnila?

Dnešní článek se bude věnovat osobnímu příplatku k platu, který se vyplácí zaměstnancům ve státní a veřejné správě. Nejde tedy o analogický příplatek ke mzdě, který si mohou ve svých pravidlech zavést a sjednávat zaměstnanci soukromých firem.

Kdo bere plat a ne mzdu?

Plat je peněžité plnění poskytované za práci zaměstnanci zaměstnavatelem, kterým je:

  • stát,
  • územní samosprávný celek čili obec nebo kraj,
  • státní fond,
  • příspěvková organizace, jejíž náklady na platy a odměny za pracovní pohotovost jsou plně zabezpečovány z příspěvku na provoz  poskytovaného z rozpočtu zřizovatele nebo z úhrad podle zvláštních právních předpisů,
  • školská právnická osoba zřízená Ministerstvem školství, mládeže a tělovýchovy, krajem, obcí nebo dobrovolným svazkem obcí podle školského zákona nebo
  • veřejná kulturní instituce podle zákona o veřejných kulturních institucích.

Osobní příplatek k tarifnímu platu

Poskytování osobního příplatku, kterému se v praxi často říká osobní ohodnocení, má od 1. 8. 2024 nová pravidla. Právní úprava byla výrazně zjednodušena – pravidla už nejsou rozdvojená pro dvě odlišné skupiny zaměstnanců podle vykonávaného druhu práce a jemu odpovídající výši platové třídy. 

Současně se již nerozlišuje maximální výše příplatku na úrovni až 50 % a na úrovni až 100 % platového tarifu nejvyššího stupně v platové třídě, do které je zaměstnanec zařazen.

Jak je konstruován tarifní plat?

Ve státní a veřejné správě jsou vypláceny tarifní tabulkové platy. O výši základního tarifního platu rozhoduje jednak vykonávaný druh práce, kterému odpovídá zařazení do určité platové třídy, a jednak započitatelná praxe, které odpovídá zařazení do určitého platového stupně. 

Zaměstnavatel zařadí zaměstnance do platové třídy podle druhu práce sjednaného v pracovní smlouvě a v jeho mezích na něm požadovaných nejnáročnějších prací. 

Zaměstnavatel zařadí zaměstnance do platového stupně podle doby dosažené praxe, doby péče o dítě a doby výkonu vojenské základní (náhradní) služby nebo civilní služby. A podle platové třídy a platového stupně se určí výše tabulkového tarifního platu.

Základní tarifní plat doplňuje celá řada příplatků

Vedle tarifního platu může být zaměstnanci přiznána řada příplatků. Na některé je automatický nárok, např. na příplatek za noční práci. Na osobní příplatek automatický nárok není. 

Podrobně jsme se tématu věnovali v článku: Na jaké příplatky k platu máte nárok ve státním sektoru?

Až 100% příplatek je nově možný pro všechny zaměstnance

Osobní příplatek je jednou ze složek platu, představuje takzvanou nenárokovou složku platu. Zaměstnavatel může zaměstnanci poskytovat osobní příplatek až do výše 100 % platového tarifu nejvyššího platového stupně v platové třídě, do které je zaměstnanec zařazen.

Přitom postupuje v souladu s ust. § 110 odst. 5 zákoníku práce, podle něhož se pracovní výkonnost posuzuje podle intenzity a kvality prováděných prací, pracovních schopností a pracovní způsobilosti a výsledky práce se posuzují podle množství a kvality.

Jen připomeňme, že při určení maxima osobního příplatku nejde o platový stupeň, do kterého je zaměstnanec skutečně zařazen (podle své praxe), ale o nejvyšší možný platový stupeň vyplývající z platových tabulek. Takže se příplatek odvozuje od tarifního platu nejvyššího platového stupně, v dané platové třídě, určeného pro zaměstnance s nejdelší praxí.

Musí zaměstnavatel kromě základního platu valorizovat o inflaci také příplatky odvozené od výše tarifního platu? Přečtěte si také:

Musí zaměstnavatel kromě základního platu valorizovat o inflaci také příplatky odvozené od výše tarifního platu?

Nešvary státní a veřejné správy

Podmínky pro přiznání osobního příplatku byly zjednodušeny, stále by však měl být ohodnocením kvality a množství práce a jejího přínosu pro zaměstnavatele. I když nelze přehlížet, že mnohdy se v praxi takový příplatek přiznává na základě úplně jiných kritérií jako protekce, nepotismus nebo servilita k nadřízenému. Podobně je tomu i s mimořádnými odměnami.

Dosavadní právní úprava, účinná do 31. 7. 2024, byla podrobnější. Předpokladem pro poskytování osobního příplatku zaměstnanci výslovně bylo, že zaměstnanec dlouhodobě dosahuje velmi dobrých pracovních výsledků, nebo že plní větší rozsah pracovních úkolů než ostatní zaměstnanci, popřípadě že současně splňuje obě tyto podmínky.

Podle výslovného znění ust. § 131 odst. 1 zákoníku práce ve znění do 31. 7. 2024 zaměstnanci, který dlouhodobě dosahuje velmi dobrých pracovních výsledků nebo plní větší rozsah pracovních úkolů než ostatní zaměstnanci, mohl zaměstnavatel poskytovat osobní příplatek až do výše 50 % platového tarifu nejvyššího platového stupně v platové třídě, do které je zaměstnanec zařazen. 

Podle výslovného znění ust. § 131 odst. 2 zákoníku práce ve znění do 31. 7. 2024 zaměstnanci, který je vynikajícím, všeobecně uznávaným odborníkem a vykonává práce zařazené do desáté až šestnácté platové třídy, mohl zaměstnavatel poskytovat osobní příplatek až do výše 100 % platového tarifu nejvyššího platového stupně v platové třídě, do které je zaměstnanec zařazen.

Za dobré pracovní výsledky až po vyhodnocení kvality práce, obvykle po zkušební době

Přiznání osobního příplatku zaměstnanci z důvodu, že zaměstnanec dlouhodobě dosahuje velmi dobrých pracovních výsledků, předpokládá, stejně jako každá další případná změna výše osobního příplatku přiznaného z tohoto důvodu, zhodnocení výsledků práce zaměstnance zaměstnavatelem. 

Protože splnění podmínky dosahování velmi dobrých pracovních výsledků posuzuje zaměstnavatel za (zákonem blíže neurčený) časový interval (podle hlediska dlouhodobosti, ale tu si určuje zaměstnavatel sám), nelze zaměstnanci přiznat osobní příplatek z tohoto důvodu již při vzniku pracovního poměru, vyložil Nejvyšší soud ČR v rozsudku spis. zn. 21 Cdo 2605/2024, ze dne 25. 2. 2025. 

V praxi tak byl a je osobní příplatek za dobré pracovní výsledky přiznáván až po skončení zkušební doby. Ale to není nezbytné. Může být přiznán i dříve. Pokud zaměstnavatel vyhodnotí pozitivně kvalitu práce zaměstnance třeba již po prvním měsíci trvání pracovního poměru.

Za plnění většího množství pracovních úkolů klidně od prvního dne pracovního poměru

Druhá z podmínek pro poskytování osobního příplatku zaměstnanci – plnění většího rozsahu pracovních úkolů oproti ostatním zaměstnancům – může být naopak zaměstnancem splněna hned na začátku pracovního poměru. Záleží na pracovní náplni. 

Osobní příplatek z tohoto důvodu lze proto zaměstnanci přiznat již při vzniku pracovního poměru, vyložil Nejvyšší soud ČR ve zmíněném rozsudku spis. zn. 21 Cdo 2605/2024, ze dne 25. 2. 2025.

Také zaměstnanec, který je vynikajícím, všeobecně uznávaným odborníkem a který vykonává práce zařazené do 10. až 16. platové třídy, musí (musel) – má-li (měl-li) mu být zaměstnavatelem přiznán osobní příplatek – splňovat alespoň jednu z podmínek pro přiznání osobního příplatku uvedených dříve v ust. § 131 odst. 1 zákoníku práce. 

Nedosahuje-li takový zaměstnanec dlouhodobě velmi dobrých pracovních výsledků a neplní-li ani větší rozsah pracovních úkolů než ostatní zaměstnanci, nemůže mu být osobní příplatek poskytován. 

Okolnost, že zaměstnanec je vynikajícím, všeobecně uznávaným odborníkem, neopravňuje zaměstnavatele k tomu, aby mu z tohoto důvodu přiznal (mohl přiznat) osobní příplatek, nýbrž k tomu, aby mu za splnění podmínek uvedených dříve v ust. § 131 odst. 1 zákoníku práce tento příplatek poskytoval (mohl poskytovat) v jiné výši, než která vyplývá z tohoto ustanovení. 

Sama odbornost respektive uznání odbornosti k přiznání osobního příplatku, jak dále vyložil Nejvyšší soud, nepostačovala.

Možné je nejen přiznání a zvýšení, ale i snížení nebo odebrání příplatku

Zaměstnanci, kterému byl přiznán osobní příplatek, může zaměstnavatel tento příplatek snížit, pokud se výsledky jeho pracovní činnosti posuzované podle jejího množství a kvality (dle ust. § 110 odst. 5 zákoníku práce) zhorší, případně pokud se zmenší rozsah jeho pracovních úkolů.

Současně lze osobní příplatek zcela odejmout, přestane-li zaměstnanec dlouhodobě dosahovat velmi dobrých pracovních výsledků posuzovaných podle množství a kvality nebo plnit větší rozsah pracovních úkolů než ostatní zaměstnanci. Podrobněji v článcích:

Zaměstnanci, který je vynikajícím, všeobecně uznávaným odborníkem a vykonává práce zařazené do 10. až 16. platové třídy a kterému je proto osobní příplatek poskytován až do výše 100 % platového tarifu nejvyššího platového stupně v platové třídě, do které je zaměstnanec zařazen, může zaměstnavatel osobní příplatek snížit na úroveň stanovenou v § 131 odst. 1 zákoníku práce též z toho důvodu, že zaměstnanec přestal splňovat podmínky uvedené v ust. § 131 odst. 2 zákoníku práce (např. přestal vykonávat práce zařazené do 10. až 16. platové třídy) – vyložil Nejvyšší soud ČR v rozsudku spis. zn. 21 Cdo 2605/2024, ze dne 25. 2. 2025.

Zaměstnavatel státní a veřejné správy si může určit vlastní kritéria pro přiznávání osobního příplatku

Nově může být osobní příplatek a to ve výši až do 100 % platového tarifu nejvyššího platového stupně v platové třídě, do které je zaměstnanec zařazen, přiznán všem zaměstnancům. Tedy i zaměstnancům vykonávajícím práce oceňované nižšími tarifními platy (zařazenými v katalogu prací do nižších platových tříd).

V současnosti si může každý zaměstnavatel státní a veřejné správy určit kritéria pro přiznávání osobního příplatku sám, přičemž záleží také na jeho rozpočtových možnostech. Může samozřejmě i nadále postupovat podle dosavadních pravidel, účinných do 31. 7. 2024. 

I nyní by však mělo platit, že za kvalitu práce by měl být příplatek přiznán až po nějaké době od vzniku pracovního poměru, právě po zhodnocení kvality práce. 

Za výkon více úkolů oproti jiným zaměstnancům může být příspěvek přiznáván případně ihned od vzniku pracovního poměru. Máme za to, že uznávaným odborníkům může být nově příplatek, a to právě toliko z důvodu jejich odbornosti přiznáván rovněž ihned od počátku pracovního poměru.

Nemělo by to být diskriminační vůči jiným zaměstnancům, pokud zaměstnavatel odůvodní zvýhodnění uznávaným odborníků jejich přínosem pro zaměstnavatele nebo jeho příslušný útvar. Například tím, že se od nich mohou učit jiní zaměstnanci.

bitcoin_smenarna

Osobní příplatek a jeho přiznání a zvláště pak odebírání nebo snižování však bylo v praxi vždy spojeno s určitými kontroverzemi. O jedné netýkající se navíc jen osobního příplatku například v článku: Musí zaměstnavatel kromě základního platu valorizovat o inflaci také příplatky odvozené od výše tarifního platu?

Určitě k nim, a tak i k soudním sporům mezi zaměstnanci a zaměstnavateli, bude docházet i za nynější volnější a liberálnější právní úpravy. Patrně nabude na významu v daném kontextu ještě více zásada rovného, nediskriminačního zacházení se zaměstnanci v oblasti jejich odměňování. Uvidíme, jaké autoritativní výklady po čase přinesou soudy.

Autor článku

Nenadávejte právníkům, zákony netvoří zdaleka jen oni. Oni je pak jen zašmodrchávají ve prospěch svých klientů, třeba zrovna vás. Budu se však snažit vám je vysvětlovat.

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 »