From 3323d0e578129f7644e248778d776fad0d41c1b3 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Sat, 27 Sep 2025 13:57:48 +0200 Subject: [PATCH] Do not run `window.history.replaceState` unconditionally Currently every Sphinx documentation page *always* drops `#:~:text=...` Text Fragments unconditionally due to `window.history.replaceState`. The solution is to only call `window.history.replaceState` when a `?highlight=...` param is part of the URL. --- sphinx/themes/basic/static/sphinx_highlight.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sphinx/themes/basic/static/sphinx_highlight.js b/sphinx/themes/basic/static/sphinx_highlight.js index ce735d52ee4..5c4737212a2 100644 --- a/sphinx/themes/basic/static/sphinx_highlight.js +++ b/sphinx/themes/basic/static/sphinx_highlight.js @@ -80,8 +80,10 @@ const SphinxHighlight = { || url.searchParams.get("highlight") || ""; localStorage.removeItem("sphinx_highlight_terms"); - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); + if (url.searchParams.has("highlight")) { + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + } // get individual terms from highlight string const terms = highlight