|
16 | 16 | return meta ? meta.getAttribute('content') : './'; |
17 | 17 | } |
18 | 18 |
|
| 19 | + var VERSION_PATTERN = /\/\d+(\.\d+)*\//; |
| 20 | + |
| 21 | + function updateNavLinks(version) { |
| 22 | + var navbar = document.getElementById('navbar'); |
| 23 | + if (!navbar || !version) return; |
| 24 | + if (!/^\d+(\.\d+)*$/.test(version)) return; |
| 25 | + |
| 26 | + var links = navbar.querySelectorAll('a'); |
| 27 | + links.forEach(function (link) { |
| 28 | + var absUrl; |
| 29 | + try { |
| 30 | + absUrl = new URL(link.href); |
| 31 | + } catch (e) { |
| 32 | + return; |
| 33 | + } |
| 34 | + if (absUrl.origin !== window.location.origin) return; |
| 35 | + var newPathname = absUrl.pathname.replace(VERSION_PATTERN, '/' + version + '/'); |
| 36 | + if (newPathname !== absUrl.pathname) { |
| 37 | + link.setAttribute('href', absUrl.origin + newPathname + absUrl.search + absUrl.hash); |
| 38 | + } |
| 39 | + }); |
| 40 | + } |
| 41 | + |
19 | 42 | function initVersionPicker(versions, latest) { |
20 | 43 | var select = document.getElementById('version-picker'); |
21 | 44 | if (!select) return; |
|
42 | 65 | select.insertBefore(placeholder, select.firstChild); |
43 | 66 | } |
44 | 67 |
|
| 68 | + window.addEventListener('load', function () { |
| 69 | + updateNavLinks(currentVersion || latest); |
| 70 | + }); |
| 71 | + |
45 | 72 | select.addEventListener('change', function () { |
46 | 73 | var targetVersion = select.value; |
47 | 74 | if (!targetVersion) return; |
48 | 75 |
|
| 76 | + updateNavLinks(targetVersion); |
| 77 | + |
49 | 78 | var newPathname; |
50 | 79 | if (currentVersion && relativePath) { |
51 | 80 | newPathname = window.location.pathname.replace( |
|
0 commit comments