Skip to content

Commit d330017

Browse files
Fix JS error when using keyboard arrows on "/releases/search" page
1 parent 5acd5ef commit d330017

File tree

1 file changed

+32
-30
lines changed

1 file changed

+32
-30
lines changed

static/index.js

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,40 +5,42 @@ function formatCrateName(crateTitleAndVersion) {
55

66
(function() {
77
const clipboard = document.getElementById("clipboard");
8-
let resetClipboardTimeout = null;
9-
let resetClipboardIcon = clipboard.innerHTML;
8+
if (clipboard) {
9+
let resetClipboardTimeout = null;
10+
let resetClipboardIcon = clipboard.innerHTML;
1011

11-
function resetClipboard() {
12-
resetClipboardTimeout = null;
13-
clipboard.innerHTML = resetClipboardIcon;
14-
}
15-
16-
function copyTextHandler() {
17-
const crateTitleAndVersion = document.getElementById("crate-title");
18-
// On rustdoc pages, we use `textTransform: uppercase`, which copies as uppercase.
19-
// To avoid that, reset the styles temporarily.
20-
const oldTransform = crateTitleAndVersion.style.textTransform;
21-
crateTitleAndVersion.style.textTransform = "none";
22-
const temporaryInput = document.createElement("input");
23-
24-
temporaryInput.type = "text";
25-
temporaryInput.value = formatCrateName(crateTitleAndVersion.innerText);
26-
27-
document.body.append(temporaryInput);
28-
temporaryInput.select();
29-
document.execCommand("copy");
30-
31-
temporaryInput.remove();
32-
crateTitleAndVersion.style.textTransform = oldTransform;
12+
function resetClipboard() {
13+
resetClipboardTimeout = null;
14+
clipboard.innerHTML = resetClipboardIcon;
15+
}
3316

34-
clipboard.textContent = "✓";
35-
if (resetClipboardTimeout !== null) {
36-
clearTimeout(resetClipboardTimeout);
17+
function copyTextHandler() {
18+
const crateTitleAndVersion = document.getElementById("crate-title");
19+
// On rustdoc pages, we use `textTransform: uppercase`, which copies as uppercase.
20+
// To avoid that, reset the styles temporarily.
21+
const oldTransform = crateTitleAndVersion.style.textTransform;
22+
crateTitleAndVersion.style.textTransform = "none";
23+
const temporaryInput = document.createElement("input");
24+
25+
temporaryInput.type = "text";
26+
temporaryInput.value = formatCrateName(crateTitleAndVersion.innerText);
27+
28+
document.body.append(temporaryInput);
29+
temporaryInput.select();
30+
document.execCommand("copy");
31+
32+
temporaryInput.remove();
33+
crateTitleAndVersion.style.textTransform = oldTransform;
34+
35+
clipboard.textContent = "✓";
36+
if (resetClipboardTimeout !== null) {
37+
clearTimeout(resetClipboardTimeout);
38+
}
39+
resetClipboardTimeout = setTimeout(resetClipboard, 1000);
3740
}
38-
resetClipboardTimeout = setTimeout(resetClipboard, 1000);
39-
}
4041

41-
if (clipboard != null) clipboard.addEventListener("click", copyTextHandler);
42+
clipboard.addEventListener("click", copyTextHandler);
43+
}
4244
for (const e of document.querySelectorAll('a[data-fragment="retain"]')) {
4345
e.addEventListener('mouseover', () => e.hash = document.location.hash);
4446
}

0 commit comments

Comments
 (0)