in themes/docsy/static/js/offline-search.js [8:56]
$(window).on('load', function() {
// Set up for an Ajax call to request the JSON data file that is created by
// Hugo's build process, with the template we added above
var request = new XMLHttpRequest();
var query = '';
// Get dom objects for the elements we'll be interacting with
$searchResults = document.getElementById('search-results');
$searchInput = document.getElementById('search-input');
request.overrideMimeType("application/json");
request.open("GET", "/index.json", true); // Request the JSON file created during build
request.onload = function() {
if (request.status >= 200 && request.status < 400) {
// Success response received in requesting the search-index file
var searchDocuments = JSON.parse(request.responseText);
// Build the index so Lunr can search it. The `ref` field will hold the URL
// to the page/post. title, excerpt, and body will be fields searched.
idx = lunr(function lunrIndex() {
this.ref('ref');
this.field('title');
this.field('body');
// Loop through all the items in the JSON file and add them to the index
// so they can be searched.
searchDocuments.forEach(function(doc) {
this.add(doc);
resultDetails[doc.ref] = {
'title': doc.title,
'excerpt': doc.excerpt,
};
}, this);
});
} else {
$searchResults.innerHTML = '<ul><li>Error loading search results</li></ul>';
}
};
request.onerror = function() {
$searchResults.innerHTML = '<ul><li>Error loading search results</li></ul>';
};
// Send the request to load the JSON
request.send();
// Register handler for the search input field
registerSearchHandler();
});