Nepřezujete na zimní pneumatiky. Jak pak (ne)plní pojišťovny?

23. 12. 2021
Doba čtení: 6 minut

Sdílet

Ilustrační foto. Poškozené vozidlo po dopravní nehodě. (29. 6. 2018)
Autor: Dalibor Z. Chvátal
Ilustrační foto. Poškozené vozidlo po dopravní nehodě. (29. 6. 2018)
Máte nehodu na letních pneumatikách, ačkoli už dávno máte mít přezuto? Ne vždy vás pojišťovny hodí přes palubu. Záleží i na tom, jestli vaše letní pneumatiky za nehodu opravdu mohly.

Přezouvání pneumatik na autě čeká řidiče dvakrát ročně. Zákon o provozu na pozemních komunikacích totiž říká, že je nutné použít zimní pneumatiky v období od 1. listopadu do 31. března za předpokladu, že:

  • na pozemních komunikacích se nachází souvislá vrstva sněhu, ledu nebo námrazy,
  • je vzhledem k povětrnostním podmínkám logické očekávat, že se na silnici můžou sníh, led či námraza nacházet.

Proto zpravidla většina řidičů na podzim přezuje své auto na zimní pneumatiky a na jaře zase na ty letní. Během zimy se totiž dají takové povětrnostní podmínky předpokládat prakticky kdykoli. Existují ale i jiné typy řidičů. Třeba takoví, kteří včas přezout nestihnou. Nebo nepovažují přezutí za nutnost a věří svým řidičským schopnostem natolik, že si myslí, že odřídí celou zimu na letním obutí.

Snadno se ale může stát, že se stanete účastníkem dopravní nehody. Buď ji přímo způsobíte, nebo máte smůlu, že někdo způsobí škodu vám. Jak se pak pojišťovny staví k vašemu letnímu obutí, když žádáte pojistné plnění z povinného ručení nebo z havarijního pojištění?

Pro pojišťovnu automaticky viníkem nejste

Jedete na letních pneumatikách, ačkoli už dávno máte mít přezuto, a dojde k dopravní nehodě. Střetnete se s jiným autem a dojde ke škodě. Potřebujete tedy využít vašeho povinného ručení, aby pojišťovna zaplatila škodu, ke které na druhém vozidle došlo.

Jakou roli hrají vaše letní pneumatiky? Dobrá zpráva je, že pro pojišťovnu nejste automaticky viníkem nehody vy. Ani vám všechny pojišťovny nezkrátí automaticky pojistné plnění proto, že jste měli nehodu na letních pneumatikách. Důležitý jegener příčinné souvislosti.

Pojišťovna Krácení povinného ručení v případě jízdy na letních pneumatikách
Allianz pojišťovna Pouze v případě prokázání příčinné souvislosti.
Česká podnikatelská pojišťovna Pouze v případě prokázání příčinné souvislosti.
ČSOB Pojišťovna Pojišťovna se nevyjádřila.
Direct pojišťovna Pojišťovna se nevyjádřila.
Generali Česká pojišťovna Pouze v případě prokázání příčinné souvislosti.
Hasičská vzájemná pojišťovna Pouze v případě prokázání příčinné souvislosti.
Kooperativa pojišťovna Pouze v případě prokázání příčinné souvislosti.
Pillow pojišťovna Pouze v případě prokázání příčinné souvislosti.
Pojišťovna VZP Pouze v případě prokázání příčinné souvislosti.
Slavia pojišťovna Pouze v případě prokázání příčinné souvislosti.
Uniqa Pojišťovna Pouze v případě prokázání příčinné souvislosti.

Co to v praxi znamená? Že aby došlo ke krácení pojistného plnění, musí být prokázáno, že vaše letní pneumatiky měly přímo vliv na vznik nehody. Zajímáme se, zda mělo nevhodné obutí vliv na vznik pojistné události, případně na rozsah vzniklé škody. Existuje mnoho situací, kdy pneumatiky vliv nemají, a tudíž nelze spojovat nehodu právě s nimi, uvedla pro Měšec.cz Eva Svobodová, tisková mluvčí Uniqa Pojišťovny.

Situace, že za nehodu nemohou vaše letní pneumatiky, může také nastat a pojišťovny na to myslí. Nepřezuté auto stojí na semaforu a čeká na červenou. Zezadu přijede auto sice se zimními pneu, ale nedobrzdí a narazí do stojícího nepřezutého auta. Jednoznačné je pak zavinění na straně auta, které nedobrzdilo. V uvedeném příkladu nemělo nepřezuté vozidlo žádnou vinu na vzniklé škodě, dodává Karel Přibyl, vedoucí oddělení pojištění vozidel Pojišťovny VZP. Pak se pro vás nic nemění, za nehodu nemůžete. A i když jedete na letních pneumatikách, postih vás od pojišťovny nečeká.

Vznikla příčinná souvislost? Pojišťovna zaplatí a bude to po vás vymáhat

Pokud ale pojišťovny dojdou k tomu, že za nehodu vaše letní pneumatiky mohly, například jste to byli vy, kdo nedobrzdil a naboural jiné vozidlo, pak vás to bude stát peníze.

Pro upřesnění dodejme, že u povinného ručení není úplně přesné hovořit o krácení pojistného plnění. V praxi totiž dochází k tomu, že poškozený vždy dostane od pojišťovny viníka proplacenou škodu. Pojišťovna viníka to ale následně po viníkovi může vymáhat. Což se stane, pokud nehodu způsobíte vy a prokáže se příčinná souvislost mezi nehodou a vaším letním obutím. Z povinného ručení vyplatíme poškozenému pojistné plnění vždy v plném rozsahu. Pokud se prokáže, že použití nevhodných pneumatik bylo přímou příčinou nehody, můžeme uplatňovat právo regresu vůči viníkovi nehody, uvedla pro Měšec.cz Renata Čapková, tisková mluvčí České podnikatelské pojišťovny.

Zda po vás pojišťovny budou vymáhat celou částku, kterou vyplatily poškozenému, nebo jen její část, už záleží na konkrétní situaci a na tom, jak velký vliv mělo vaše letní obutí na vznik nehody.

A co havarijní pojištění?

Škoda při nehodě mohla vzniknout nejen na druhém vozidle, ale i na tom vašem, které jelo na letních pneumatikách. Jak je to s náhradou škody pro vás, když jste jeli na letních pneumatikách? Je potřeba uplatnit havarijní pojištění.

I tam se pochopitelně zkoumá příčinná souvislost. Někdy může dojít ke krácení pojistného plnění. Pokud má motorista na autě pneumatiky s dostatečnou hloubkou dezénu (min. 1,6 mm), ale jde o letní gumy a ke škodě dojde v zimním období na sněhu či ledu, může mu pojišťovna v rámci havarijního pojištění v konečném důsledku snížit pojistné plnění, uvedla pro Měšec.cz Marie Petrovová, tisková mluvčí Allianz pojišťovny.

Někdy ale pojišťovna může výplatu pojistného plnění úplně zamítnout. V krajním případě by mohlo jít o tzv. nepřímý úmysl, kdy řidič věděl, že si s letními pneumatikami na sněhu při riskantní jízdě koledoval o průšvih, ale bylo mu to jedno, protože je havarijně pojištěný. V takovém případě se totiž riziko vzniku nehody blíží takřka k jistotě, a proto by pak mohla pojišťovna takovou škodu považovat za nelikvidní, dodává Marie Petrovová.

Předcházení vzniku škody

Pojišťovna vám může snížit pojistné plnění, pokud mělo použití letních pneumatik podstatný vliv na vznik pojistné události, nebo i na rozsah škody. Tedy že škoda mohla být menší, kdybyste měli zimní pneumatiky.

Snížení plnění tedy může být od 0 do 100 podle situace. Pojišťovna může přistoupit ke snížení pojistného plnění pro porušení závazného ustanovení, kdy mimo jiné klient při jízdě s nevhodným obutím nepředchází vzniku škody, dodává Jan Marek, tiskový mluvčí Generali České pojišťovny.

Někde jsou nekompromisní

V praxi ale může hodně záležet na tom, u koho jste pojištěni. Někde zkoumají, jestli a jaký vliv měly letní pneumatiky. Někde ale v takovém případě musíte rovnou počítat se zamítnutím pojistného plnění z havarijního pojištění. V havarijním pojištění to máme přímo ve výluce, protože např. jízda na sněhu a ledu zvyšuje násobně riziko nehody, dodává Karel Přibyl.

Prokáže-li se příčinná souvislost a jsou-li pneumatiky jedinou nebo hlavní příčinou vzniku nehody, pojistné plnění vyplaceno není, dodává Eva Svobodová.

A co celoroční vzorek pneumatik?

V praxi se také stále více objevuje tzv. celoroční vzorek pneumatik, které není nutné přezouvat. Pojišťovny v takových případech zajímá hlavně hloubka dezénu. Při pojistné události pojišťovnu zajímá hloubka dezénu daná legislativou. Celoroční pneumatiky musejí mít v létě vzorek minimálně 1,6 mm, v zimě pak 4,0 mm, informuje Jan Marek.

Školení pro účetní - podzimní novinky

Zkušenost z praxe? Pojišťovny to ani zjistit nemusí

V praxi se ale ukazuje, že ne vždy mají pojišťovny možnost posoudit, zda a jaký vliv měly letní pneumatiky na vznik škody. U většiny škod se pojišťovna nedozví, že vozidlo nemělo zimní přezutí. Nedobrzdění a ťukanec do auta stojícího před ním většinou znamená škodu do 100 tisíc a není zde povinnost volat Policii, pokud nebyl nikdo zraněn. Pojišťovna dostane záznam o dopravní nehodě a zlikviduje škodu, uvedl pro Měšec.cz Martin Podávka, tiskový mluvčí Pillow pojišťovny.

Rozhodně to ale neznamená, že byste měli jízdou na letních pneumatikách na silnicích riskovat. Rozbité plechy a vymáhaná škoda je totiž pořád ještě ta lepší varianta toho, co se může stát.

Autor článku

Psaním jsem skloubila své znalosti ze studií financí a žurnalistiky. Ráda se učím nové věci, tančím a běhám.

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