(function ($) { document.addEventListener('DOMContentLoaded', () => { // Enable fallback URLs for broken redirects from the version or language switchers. _prepareSwitchersFallbacks(); }); /** * Add event listeners on links in the version and language switchers. * * If a link is clicked, the user is redirected to the closest fallback URL (including the * original target URL) that is available. */ const _prepareSwitchersFallbacks = () => { document.querySelectorAll('a.o_switcher_item').forEach(element => { element.addEventListener('click', async event => { if (element.hasAttribute('href')) { const targetUrl = element.getAttribute('href'); if (!targetUrl.startsWith('/')) { // Don't test for valid URLs if in localhost. event.preventDefault(); const fallbackUrls = await _generateFallbackUrls(targetUrl); const fallbackUrl = await _getFirstValidUrl(fallbackUrls) ?? targetUrl; window.location.href = fallbackUrl; } } }); }); }; })();