Lines 71-82
Link Here
|
71 |
const consentBar = $("#cookieConsentBar"); |
71 |
const consentBar = $("#cookieConsentBar"); |
72 |
consentBar.attr("aria-hidden", "false"); |
72 |
consentBar.attr("aria-hidden", "false"); |
73 |
consentBar.css("display", "flex"); |
73 |
consentBar.css("display", "flex"); |
|
|
74 |
|
75 |
// Set focus to the first focusable element within the consent bar |
76 |
const firstFocusableElement = consentBar |
77 |
.find("a, button, input, select, textarea") |
78 |
.filter(":visible") |
79 |
.first(); |
80 |
if (firstFocusableElement.length) { |
81 |
firstFocusableElement.focus(); |
82 |
} else { |
83 |
// If no focusable elements exist, add tabindex to the bar itself to make it focusable |
84 |
consentBar.attr("tabindex", "-1").focus(); |
85 |
} |
74 |
} |
86 |
} |
75 |
|
87 |
|
76 |
function hideConsentBar() { |
88 |
function hideConsentBar() { |
77 |
const consentBar = $("#cookieConsentBar"); |
89 |
const consentBar = $("#cookieConsentBar"); |
78 |
consentBar.attr("aria-hidden", "true"); |
90 |
consentBar.attr("aria-hidden", "true"); |
79 |
consentBar.hide(); |
91 |
consentBar.hide(); |
|
|
92 |
|
93 |
// Remove focus from any currently focused element |
94 |
if (document.activeElement) { |
95 |
document.activeElement.blur(); |
96 |
} |
97 |
|
98 |
// Set focus to the body, which effectively removes visible focus indicators |
99 |
// This allows the first Tab press to highlight the "Skip to main content" link |
100 |
document.body.focus(); |
101 |
document.querySelector("body").setAttribute("tabindex", "-1"); |
102 |
document.querySelector("body").focus(); |
103 |
document.querySelector("body").removeAttribute("tabindex"); |
80 |
} |
104 |
} |
81 |
|
105 |
|
82 |
// Hides the appropriate consent container, depending on what |
106 |
// Hides the appropriate consent container, depending on what |
83 |
- |
|
|