Usage
This function runs automatically, so it is not called manually. Is this incorrect?
Source File
Located in /assets/js/modules/search.js on line 377.
No Hooks
This function does not have any filters or actions available. Request one?
JavaScript
nebula.searchTermHighlighter = async function(){ window.requestAnimationFrame(async function(){ let searchTerm = nebula.get('s'); if ( searchTerm ){ let termPattern = new RegExp('(?![^<]+>)(' + nebula.preg_quote(searchTerm.replaceAll(/(\+|%22|%20)/g, ' ')) + ')', 'ig'); // Find the search term within the text //Loop using for...of so that it can yield asynchronously without having a race condition when using jQuery.each() for ( const element of jQuery('article .entry-title a, article .entry-summary') ){ await nebula.yield(); jQuery(element).html(function(i, html){ return html.replace(termPattern, '<mark class="searchresultword">$1</mark>'); //Wrap each found search term }); } nebula.emphasizeSearchTerms(); } }); };
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).
JavaScript
For non-module import functions:
nebula.searchTermHighlighter = function(){ //Write your own code here, leave it blank, or return false. }
For dynamically imported module function overrides:
jQuery(window).on('load', function(){ nebula.searchTermHighlighter = 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.searchTermHighlighter === 'function' ){ nebula.searchTermHighlighter = function(){ //Write your own code here, leave it blank, or return false. } } });