Improve URL handling when clicking on a menu link while being on the search results and overall
This commit is contained in:
parent
ef3127dcdf
commit
09518db73e
1 changed files with 16 additions and 7 deletions
|
@ -94,6 +94,11 @@ function getThemePickerElement() {
|
||||||
return document.getElementById("theme-picker");
|
return document.getElementById("theme-picker");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns the current URL without any query parameter or hash.
|
||||||
|
function getNakedUrl() {
|
||||||
|
return window.location.href.split("?")[0].split("#")[0];
|
||||||
|
}
|
||||||
|
|
||||||
// Sets the focus on the search bar at the top of the page
|
// Sets the focus on the search bar at the top of the page
|
||||||
function focusSearchBar() {
|
function focusSearchBar() {
|
||||||
getSearchInput().focus();
|
getSearchInput().focus();
|
||||||
|
@ -255,7 +260,9 @@ function defocusSearchBar() {
|
||||||
hideSearchResults(search);
|
hideSearchResults(search);
|
||||||
var hash = ev.newURL.slice(ev.newURL.indexOf("#") + 1);
|
var hash = ev.newURL.slice(ev.newURL.indexOf("#") + 1);
|
||||||
if (browserSupportsHistoryApi()) {
|
if (browserSupportsHistoryApi()) {
|
||||||
history.replaceState(hash, "", "?search=#" + hash);
|
// `window.location.search`` contains all the query parameters, not just `search`.
|
||||||
|
history.replaceState(hash, "",
|
||||||
|
getNakedUrl() + window.location.search + "#" + hash);
|
||||||
}
|
}
|
||||||
elem = document.getElementById(hash);
|
elem = document.getElementById(hash);
|
||||||
if (elem) {
|
if (elem) {
|
||||||
|
@ -1813,10 +1820,12 @@ function defocusSearchBar() {
|
||||||
// Because searching is incremental by character, only the most
|
// Because searching is incremental by character, only the most
|
||||||
// recent search query is added to the browser history.
|
// recent search query is added to the browser history.
|
||||||
if (browserSupportsHistoryApi()) {
|
if (browserSupportsHistoryApi()) {
|
||||||
|
var newURL = getNakedUrl() + "?search=" + encodeURIComponent(query.raw) +
|
||||||
|
window.location.hash;
|
||||||
if (!history.state && !params.search) {
|
if (!history.state && !params.search) {
|
||||||
history.pushState(query, "", "?search=" + encodeURIComponent(query.raw));
|
history.pushState(query, "", newURL);
|
||||||
} else {
|
} else {
|
||||||
history.replaceState(query, "", "?search=" + encodeURIComponent(query.raw));
|
history.replaceState(query, "", newURL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1926,7 +1935,7 @@ function defocusSearchBar() {
|
||||||
if (search_input.value.length === 0) {
|
if (search_input.value.length === 0) {
|
||||||
if (browserSupportsHistoryApi()) {
|
if (browserSupportsHistoryApi()) {
|
||||||
history.replaceState("", window.currentCrate + " - Rust",
|
history.replaceState("", window.currentCrate + " - Rust",
|
||||||
window.location.href.split("?")[0]);
|
getNakedUrl() + window.location.hash);
|
||||||
}
|
}
|
||||||
hideSearchResults();
|
hideSearchResults();
|
||||||
} else {
|
} else {
|
||||||
|
@ -2786,9 +2795,9 @@ function defocusSearchBar() {
|
||||||
if (search_input.value !== "" && hasClass(search, "hidden")) {
|
if (search_input.value !== "" && hasClass(search, "hidden")) {
|
||||||
showSearchResults(search);
|
showSearchResults(search);
|
||||||
if (browserSupportsHistoryApi()) {
|
if (browserSupportsHistoryApi()) {
|
||||||
history.replaceState(search_input.value,
|
var extra = "?search=" + encodeURIComponent(search_input.value);
|
||||||
"",
|
history.replaceState(search_input.value, "",
|
||||||
"?search=" + encodeURIComponent(search_input.value));
|
getNakedUrl() + extra + window.location.hash);
|
||||||
}
|
}
|
||||||
document.title = searchTitle;
|
document.title = searchTitle;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue