← hugo-clarity

Only run highlightSearchTerms() when a query exists

5be8a40ff4156e5c1d5c7edb0fe4537c7992a35f · Ivan Boothe · Jul 28, 2022 13:43

Signed-off-by: Ivan Boothe <git@rootwork.org>

+34 −29 · 2 files changed

  • assets/js/functions.js +9 −0
  • assets/js/search.js +25 −29
diff --git a/assets/js/functions.js b/assets/js/functions.js
index 5c7d915..59b9e79 100644
--- a/assets/js/functions.js
+++ b/assets/js/functions.js
@@ -186,6 +186,15 @@ function forEach(node, callback) {
   node ? Array.prototype.forEach.call(node.childNodes, callback) : false;
 }
 
+function findQuery(query = 'query') {
+  const urlParams = new URLSearchParams(window.location.search);
+  if(urlParams.has(query)){
+    let c = urlParams.get(query);
+    return c;
+  }
+  return "";
+}
+
 function wrapText(text, context, wrapper = 'mark') {
   let open = `<${wrapper}>`;
   let close = `</${wrapper}>`;
diff --git a/assets/js/search.js b/assets/js/search.js
index 13727a3..c3c926a 100644
--- a/assets/js/search.js
+++ b/assets/js/search.js
@@ -130,15 +130,6 @@ function initializeSearch(index) {
     }
   }
 
-  function findQuery(query = 'query') {
-    const urlParams = new URLSearchParams(window.location.search);
-    if(urlParams.has(query)){
-      let c = urlParams.get(query);
-      return c;
-    }
-    return "";
-  }
-
   function passiveSearch() {
     if(searchPageElement) {
       const searchTerm = findQuery();
@@ -208,27 +199,32 @@ function initializeSearch(index) {
 }
 
 function highlightSearchTerms(search, context, wrapper = 'mark', cssClass = '') {
-  let container = elem(context);
-  let reg = new RegExp("(" + search + ")", "gi");
-
-  function searchInNode(parentNode, search) {
-    forEach(parentNode, function (node) {
-      if (node.nodeType === 1) {
-        searchInNode(node, search);
-      } else if (
-        node.nodeType === 3 &&
-        reg.test(node.nodeValue)
-      ) {
-        let string = node.nodeValue.replace(reg, `<${wrapper} class="${cssClass}">$1</${wrapper}>`);
-        let span = document.createElement("span");
-        span.dataset.searched = "true";
-        span.innerHTML = string;
-        parentNode.replaceChild(span, node);
-      }
-    });
-  };
+  const query = findQuery()
+  if(query){
+
+    let container = elem(context);
+    let reg = new RegExp("(" + search + ")", "gi");
+
+    function searchInNode(parentNode, search) {
+      forEach(parentNode, function (node) {
+        if (node.nodeType === 1) {
+          searchInNode(node, search);
+        } else if (
+          node.nodeType === 3 &&
+          reg.test(node.nodeValue)
+        ) {
+          let string = node.nodeValue.replace(reg, `<${wrapper} class="${cssClass}">$1</${wrapper}>`);
+          let span = document.createElement("span");
+          span.dataset.searched = "true";
+          span.innerHTML = string;
+          parentNode.replaceChild(span, node);
+        }
+      });
+    };
 
-  searchInNode(container, search);
+    searchInNode(container, search);
+
+  }
 }
 
 window.addEventListener('load', function() {