Usage
nebula.predictiveCacheListeners()
Parameters
This function does not accept any parameters. Is this incorrect?
Additional Notes
If a service worker is being used (and Cache API is available), the resource will be fetched and added to the cache. Otherwise, it will attempt to prefetch with a resource hint instead.
It also does not run when offline.
Note: This only enables event listeners! To add to the cache, see nebulaAddToCache() ornebulaPrefetch().
Source File
Located in /assets/js/modules/optimization.js on line 438.
No Hooks
This function does not have any filters or actions available. Request one?nebula.predictiveCacheListeners = async function(){
//If Save Data is supported and Save Data is requested do not bother with predictive listeners
if ( navigator.connection?.saveData ){
return false;
}
//Any post listing page
if ( jQuery('.first-post .entry-title a').length ){
nebula.prefetch(jQuery('.first-post .entry-title a').attr('href'));
}
//Internal link hovers
let predictiveHoverTimeout;
jQuery('a').on('mouseenter', async function(){
//await nebula.yield();
let $oThis = jQuery(this);
let url = $oThis.attr('href');
if ( url && !predictiveHoverTimeout ){
predictiveHoverTimeout = window.setTimeout(function(){
predictiveHoverTimeout = null; //Reset the timer
nebula.prefetch(url); //Attempt to prefetch
}, 250);
}
}).on('mouseleave', function(){
if ( predictiveHoverTimeout ){
window.clearTimeout(predictiveHoverTimeout);
predictiveHoverTimeout = null;
}
});
};
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.predictiveCacheListeners = function(){
//Write your own code here, leave it blank, or return false.
}
For dynamically imported module function overrides:
jQuery(window).on('load', function(){
nebula.predictiveCacheListeners = 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.predictiveCacheListeners === 'function' ){
nebula.predictiveCacheListeners = function(){
//Write your own code here, leave it blank, or return false.
}
}
});