Prevent automatic page change when using history

This commit is contained in:
Guillaume Gomez 2020-08-22 16:49:56 +02:00
parent 1a22a0ff93
commit 6cb364cda4

View File

@ -1576,14 +1576,18 @@ function defocusSearchBar() {
} }
function showResults(results) { function showResults(results) {
if (results.others.length === 1 && var search = getSearchElement();
getCurrentValue("rustdoc-go-to-only-result") === "true") { if (results.others.length === 1
&& getCurrentValue("rustdoc-go-to-only-result") === "true"
&& (!search.firstChild || search.firstChild.innerText !== getSearchLoadingText()))
{
var elem = document.createElement("a"); var elem = document.createElement("a");
elem.href = results.others[0].href; elem.href = results.others[0].href;
elem.style.display = "none"; elem.style.display = "none";
// For firefox, we need the element to be in the DOM so it can be clicked. // For firefox, we need the element to be in the DOM so it can be clicked.
document.body.appendChild(elem); document.body.appendChild(elem);
elem.click(); elem.click();
return;
} }
var query = getQuery(search_input.value); var query = getQuery(search_input.value);
@ -1602,7 +1606,6 @@ function defocusSearchBar() {
"</div><div id=\"results\">" + "</div><div id=\"results\">" +
ret_others[0] + ret_in_args[0] + ret_returned[0] + "</div>"; ret_others[0] + ret_in_args[0] + ret_returned[0] + "</div>";
var search = getSearchElement();
search.innerHTML = output; search.innerHTML = output;
showSearchResults(search); showSearchResults(search);
var tds = search.getElementsByTagName("td"); var tds = search.getElementsByTagName("td");
@ -2679,6 +2682,10 @@ function defocusSearchBar() {
} }
} }
function getSearchLoadingText() {
return "Loading search results...";
}
if (search_input) { if (search_input) {
search_input.onfocus = function() { search_input.onfocus = function() {
putBackSearch(this); putBackSearch(this);
@ -2688,7 +2695,7 @@ function defocusSearchBar() {
var params = getQueryStringParams(); var params = getQueryStringParams();
if (params && params.search) { if (params && params.search) {
var search = getSearchElement(); var search = getSearchElement();
search.innerHTML = "<h3 style=\"text-align: center;\">Loading search results...</h3>"; search.innerHTML = "<h3 style=\"text-align: center;\">" + getSearchLoadingText() + "</h3>";
showSearchResults(search); showSearchResults(search);
} }