Usage
This function runs automatically, so it is not called manually. Is this incorrect?
Source File
Located in /assets/js/modules/utilities.js on line 176.
No Hooks
This function does not have any filters or actions available. Request one?nebula.errorMitigation = function(){ //Try to fall back to .png on .svg errors. Else log the broken image. let brokenImageCount = 0; jQuery('img').on('error', async function(){ brokenImageCount++; // Increment broken image counter if ( brokenImageCount >= 5 ){ return; //Stop fetching after a certain amount of broken images } await nebula.yield(); let thisImage = jQuery(this); let imagePath = thisImage.attr('src'); if ( imagePath.split('.').pop() === 'svg' ){ let fallbackPNG = imagePath.replace('.svg', '.png'); fetch(fallbackPNG, { method: 'GET', priority: 'low', }).then(function(response){ if ( response.ok ){ thisImage.prop('src', fallbackPNG); thisImage.removeClass('svg'); } }).catch(function(error){ gtag('event', 'Exception', { message: '(JS) Broken Image: ' + imagePath, fatal: false }); nebula.crm?.('event', 'Broken Image'); //May not be defined if analytics is not active so using optional chaining on the execution of this function }); } else { gtag('event', 'Exception', { message: '(JS) Broken Image: ' + imagePath, fatal: false }); nebula.crm?.('event', 'Broken Image'); //May not be defined if analytics is not active so using optional chaining on the execution of this function } }); };
Override
To override or disable this JavaScript function, simply redeclare it with the exact same function name. Remember: Some functionality is conditionally loaded via dynamic imports, so if your function is not overriding properly, try listening for a DOM event (described below).
For non-module import functions:
nebula.errorMitigation = function(){ //Write your own code here, leave it blank, or return false. }
For dynamically imported module function overrides:
jQuery(window).on('load', function(){ nebula.errorMitigation = function(){ //Write your own code here, leave it blank, or return false. } });
Custom Nebula DOM events do also exist, so you could also try the following if the Window Load listener does not work:
jQuery(document).on('nebula_module_loaded', function(module){ //Note that the module variable is also available to know which module specifically was imported if ( typeof nebula.errorMitigation === 'function' ){ nebula.errorMitigation = function(){ //Write your own code here, leave it blank, or return false. } } });