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 190.
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.
}
}
});