From 4924efd0b63bb738cc4820dc719d3e485eda0dd0 Mon Sep 17 00:00:00 2001 From: He4eT Date: Fri, 26 Jan 2024 17:46:42 +0100 Subject: [PATCH] pages/search: escape tab text --- pages/search/modules/dom.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pages/search/modules/dom.js b/pages/search/modules/dom.js index 6a9b46c..b78b517 100644 --- a/pages/search/modules/dom.js +++ b/pages/search/modules/dom.js @@ -1,18 +1,27 @@ const fuzzysort = window.fuzzysort +/* */ +const highlightTagName = crypto.randomUUID().slice(0, 4) + +const unescapeHighlight = (innerText) => + innerText + .replaceAll(`<${highlightTagName}>`, '') + .replaceAll(`</${highlightTagName}>`, '') + /* https://png-pixel.com/ */ const defaultFavicon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkqAcAAIUAgUW0RjgAAAAASUVORK5CYII=' const tabView = (result) => { const tab = result.obj const [label, title, url] = result.map((field) => - fuzzysort.highlight(field)) + fuzzysort.highlight(field, `<${highlightTagName}>`, ``)) /* Parts */ const labelSpan = document.createElement('span') labelSpan.classList.add('label') labelSpan.textContent = label ?? tab.label + labelSpan.innerHTML = unescapeHighlight(labelSpan.innerHTML) const faviconImg = document.createElement('img') faviconImg.classList.add('favicon') @@ -25,10 +34,12 @@ const tabView = (result) => { const titleSpan = document.createElement('span') titleSpan.classList.add('title') titleSpan.textContent = title ?? tab.title + titleSpan.innerHTML = unescapeHighlight(titleSpan.innerHTML) const urlSpan = document.createElement('span') urlSpan.classList.add('url') urlSpan.textContent = url ?? tab.url + urlSpan.innerHTML = unescapeHighlight(urlSpan.innerHTML) const parts = [ labelSpan,