607 lines
24 KiB
HTML
607 lines
24 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" class="sidebar-visible no-js light">
|
|
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Hitch Hiker Linux</title>
|
|
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
|
|
<meta name="description" content="">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="theme-color" content="#ffffff" />
|
|
|
|
<link rel="icon" href="/favicon.svg">
|
|
<link rel="shortcut icon" href="/favicon.png">
|
|
|
|
<link rel="stylesheet" href="/handbook/css/variables.css">
|
|
<link rel="stylesheet" href="/handbook/css/general.css">
|
|
<link rel="stylesheet" href="/handbook/css/chrome.css">
|
|
|
|
<link rel="stylesheet" href="/handbook/css/print.css" media="print">
|
|
|
|
<!-- Fonts -->
|
|
<link rel="stylesheet" href="/handbook/FontAwesome/css/font-awesome.css">
|
|
|
|
<link rel="stylesheet" href="/handbook/fonts/fonts.css">
|
|
|
|
<!-- Highlight.js Stylesheets -->
|
|
<link rel="stylesheet" href="/handbook/highlight.css">
|
|
<link rel="stylesheet" href="/handbook/tomorrow-night.css">
|
|
<link rel="stylesheet" href="/handbook/ayu-highlight.css">
|
|
|
|
<!-- Custom Stylesheets -->
|
|
<link rel="stylesheet" href="/hhl.css">
|
|
|
|
</head>
|
|
|
|
<body>
|
|
<!-- Provide site root to javascript -->
|
|
<script type="text/javascript">
|
|
var path_to_root = "/handbook";
|
|
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "navy" : "light";
|
|
</script>
|
|
|
|
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
|
<script type="text/javascript">
|
|
try {
|
|
var theme = localStorage.getItem('mdbook-theme');
|
|
var sidebar = localStorage.getItem('mdbook-sidebar');
|
|
|
|
if (theme.startsWith('"') && theme.endsWith('"')) {
|
|
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
|
}
|
|
|
|
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
|
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
|
}
|
|
} catch (e) { }
|
|
</script>
|
|
|
|
<!-- Set the theme before any content is loaded, prevents flash -->
|
|
<script type="text/javascript">
|
|
var theme;
|
|
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
|
if (theme === null || theme === undefined) { theme = default_theme; }
|
|
var html = document.querySelector('html');
|
|
html.classList.remove('no-js')
|
|
html.classList.remove('light')
|
|
html.classList.add(theme);
|
|
html.classList.add('js');
|
|
</script>
|
|
|
|
<!-- Hide / unhide sidebar before it is displayed -->
|
|
<script type="text/javascript">
|
|
var html = document.querySelector('html');
|
|
var sidebar = 'hidden';
|
|
if (document.body.clientWidth >= 1080) {
|
|
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
|
sidebar = sidebar || 'visible';
|
|
}
|
|
html.classList.remove('sidebar-visible');
|
|
html.classList.add("sidebar-" + sidebar);
|
|
</script>
|
|
|
|
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
|
<div class="sidebar-scrollbox">
|
|
<ol class="chapter">
|
|
<li class="chapter-item affix ">
|
|
<a href="/">Home</a>
|
|
</li>
|
|
<li class="chapter-item affix ">
|
|
<a href="/news/">News</a>
|
|
</li>
|
|
<li class="chapter-item affix ">
|
|
<a href="/about/">About</a>
|
|
</li>
|
|
<li class="chapter-item affix ">
|
|
<a href="/pub/">Download</a>
|
|
</li>
|
|
<li class="chapter-item affix ">
|
|
<a href="https://git.hitchhiker-linux.org">Source</a>
|
|
</li>
|
|
<li class="spacer"></li>
|
|
<li class="chapter-item affix ">
|
|
<a href="/handbook/">Handbook</a>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
<div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
|
|
</nav>
|
|
<div id="page-wrapper" class="page-wrapper">
|
|
<div class="page">
|
|
<div id="menu-bar-hover-placeholder"></div>
|
|
<div id="menu-bar" class="menu-bar sticky bordered">
|
|
<div class="left-buttons">
|
|
<button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
|
<i class="fa fa-bars"></i>
|
|
</button>
|
|
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
|
<i class="fa fa-paint-brush"></i>
|
|
</button>
|
|
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
|
<li role="none"><button role="menuitem" class="theme" id="light">Light (default)</button></li>
|
|
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
|
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
|
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
|
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
|
</ul>
|
|
</div>
|
|
<h1 class="menu-title">
|
|
Hitch Hiker Linux
|
|
</h1>
|
|
</div>
|
|
|
|
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
|
<script type="text/javascript">
|
|
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
|
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
|
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
|
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
|
});
|
|
</script>
|
|
<div id="content" class="content">
|
|
<main>
|
|
|
|
<div id="content" class="content">
|
|
<main>
|
|
<h1><a class="header" href="#recent" id="recent">Recent posts</a></h1>
|
|
<ul>
|
|
|
|
<div class="card">
|
|
<a class = header href="/news/improved-porting-with-libbsd/">
|
|
<strong>Improved porting with libbsd</strong>
|
|
</a>
|
|
<div class="right">2020-08-24</div>
|
|
|
|
<p>The libbsd project was begun originally by the developers of the Debian K-FreeBSD project as a means of addressing differences in the available functions, headers and c macros between BSD libc and GNU libc. I have imported the source...</p>
|
|
|
|
<a href="/news/improved-porting-with-libbsd/">Read More -></a>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<a class = header href="/news/porting-netbsd-userland-infrastructure-improvements/">
|
|
<strong>Porting NetBSD userland, infrastructure improvements</strong>
|
|
</a>
|
|
<div class="right">2020-08-17</div>
|
|
|
|
<p>As noted previously, I have some issues with the complexity of GNU autotools and the bloat that it introduces into building what should be very simple programs. I pointed out coreutils as one of the worst offenders at that time, and have been exploring ways to either port coreutils to a simpler build system or outright replace the package....</p>
|
|
|
|
<a href="/news/porting-netbsd-userland-infrastructure-improvements/">Read More -></a>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<a class = header href="/news/restarting-make-buildworld-cleanup-default-software/">
|
|
<strong>Restarting make, buildworld cleanup, default software</strong>
|
|
</a>
|
|
<div class="right">2020-08-03</div>
|
|
|
|
<p>One of the deficiencies in the HitchHiker build tree up to this point has been dealing with packages that require some manual intervention after the "make install" step. Originally there was no unified infrastructure to deal with this scenario. Very quickly...</p>
|
|
|
|
<a href="/news/restarting-make-buildworld-cleanup-default-software/">Read More -></a>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<a class = header href="/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/">
|
|
<strong>Imported source, pkgsrc on Arm woes, and make includes</strong>
|
|
</a>
|
|
<div class="right">2020-08-01</div>
|
|
|
|
<p>I think we'll start this post discussing some of the differences and misconceptions of same between BSD make and GNU make. In the case of BSD make we're primarily referring to NetBSD make, which is a greatly improved version of the historical Unix make...</p>
|
|
|
|
<a href="/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/">Read More -></a>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<a class = header href="/news/patching-pkgsrc-building-rust-and-arm-headaches/">
|
|
<strong>Patching pkgsrc, building rust and Arm headaches</strong>
|
|
</a>
|
|
<div class="right">2020-07-20</div>
|
|
|
|
<p>Having been working with pkgsrc for a couple weeks now there's a bit of a flow
|
|
developing, and quite a bit of progress, with a big caveat. The issues I'm
|
|
running into are that there are quite a few more build failures for Arm than
|
|
there are for x86_64....</p>
|
|
|
|
<a href="/news/patching-pkgsrc-building-rust-and-arm-headaches/">Read More -></a>
|
|
</div>
|
|
|
|
</ul>
|
|
<hr>
|
|
<p class="subtitle"><strong>Tags:</strong></p>
|
|
|
|
|
|
|
|
|
|
|
|
<a class="tags" href="/tags/4-4bsdlite/">4.4BSDlite</a>
|
|
|
|
|
|
<a class="tags" href="/tags/arm/">Arm</a>
|
|
|
|
|
|
<a class="tags" href="/tags/c-programming/">C Programming</a>
|
|
|
|
|
|
<a class="tags" href="/tags/clang/">Clang</a>
|
|
|
|
|
|
<a class="tags" href="/tags/cross-compile/">cross-compile</a>
|
|
|
|
|
|
<a class="tags" href="/tags/css/">css</a>
|
|
|
|
|
|
<a class="tags" href="/tags/deprecation/">Deprecation</a>
|
|
|
|
|
|
<a class="tags" href="/tags/editors/">Editors</a>
|
|
|
|
|
|
<a class="tags" href="/tags/glibc/">Glibc</a>
|
|
|
|
|
|
<a class="tags" href="/tags/gnu-make/">GNU Make</a>
|
|
|
|
|
|
<a class="tags" href="/tags/html/">html</a>
|
|
|
|
|
|
<a class="tags" href="/tags/libraries/">Libraries</a>
|
|
|
|
|
|
<a class="tags" href="/tags/llvm/">llvm</a>
|
|
|
|
|
|
<a class="tags" href="/tags/mdbook/">mdbook</a>
|
|
|
|
|
|
<a class="tags" href="/tags/milestones/">Milestones</a>
|
|
|
|
|
|
<a class="tags" href="/tags/nongnu/">NonGNU</a>
|
|
|
|
|
|
<a class="tags" href="/tags/packages/">Packages</a>
|
|
|
|
|
|
<a class="tags" href="/tags/pkgsrc/">Pkgsrc</a>
|
|
|
|
|
|
<a class="tags" href="/tags/porting/">Porting</a>
|
|
|
|
|
|
<a class="tags" href="/tags/programming/">Programming</a>
|
|
|
|
|
|
<a class="tags" href="/tags/qemu/">Qemu</a>
|
|
|
|
|
|
<a class="tags" href="/tags/riscv/">RiscV</a>
|
|
|
|
|
|
<a class="tags" href="/tags/roadmap/">Roadmap</a>
|
|
|
|
|
|
<a class="tags" href="/tags/rust/">Rust</a>
|
|
|
|
|
|
<a class="tags" href="/tags/site-news/">Site News</a>
|
|
|
|
|
|
<a class="tags" href="/tags/sysroot/">sysroot</a>
|
|
|
|
|
|
<a class="tags" href="/tags/systemd/">Systemd</a>
|
|
|
|
|
|
<a class="tags" href="/tags/utilities/">Utilities</a>
|
|
|
|
|
|
<a class="tags" href="/tags/web-programming/">Web Programming</a>
|
|
|
|
|
|
<a class="tags" href="/tags/zola/">Zola</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<nav class="nav-wrapper" aria-label="Page navigation">
|
|
<!-- Mobile navigation buttons -->
|
|
<a rel="prev" href="/news/page/2/" class="mobile-nav-chapters previous" title="Previous page" aria-label="Previous page" aria-keyshortcuts="Left">
|
|
<i class="fa fa-angle-left"></i>
|
|
</a>
|
|
</nav>
|
|
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
|
<a rel="prev" class="nav-chapters previous" title="Previous page" aria-label="Previous page" aria-keyshortcuts="Left" href="/news/page/2/">
|
|
<i class="fa fa-angle-left"></i>
|
|
</a>
|
|
</nav>
|
|
|
|
|
|
<nav class="nav-wrapper" aria-label="Page navigation">
|
|
<!-- Mobile navigation buttons -->
|
|
<a rel="next" href="/news/page/4/" class="mobile-nav-chapters next" title="Next page" aria-label="Next page" aria-keyshortcuts="Right">
|
|
<i class="fa fa-angle-right"></i>
|
|
</a>
|
|
</nav>
|
|
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
|
<a rel="next" class="nav-chapters next" title="Next page" aria-label="Next page" aria-keyshortcuts="Right" href="/news/page/4/">
|
|
<i class="fa fa-angle-right"></i>
|
|
</a>
|
|
</nav>
|
|
|
|
</main>
|
|
</div>
|
|
|
|
</main>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
(function themes() {
|
|
var html = document.querySelector('html');
|
|
var themeToggleButton = document.getElementById('theme-toggle');
|
|
var themePopup = document.getElementById('theme-list');
|
|
var themeColorMetaTag = document.querySelector('meta[name="theme-color"]');
|
|
var stylesheets = {
|
|
ayuHighlight: document.querySelector("[href$='ayu-highlight.css']"),
|
|
tomorrowNight: document.querySelector("[href$='tomorrow-night.css']"),
|
|
highlight: document.querySelector("[href$='highlight.css']"),
|
|
};
|
|
|
|
function showThemes() {
|
|
themePopup.style.display = 'block';
|
|
themeToggleButton.setAttribute('aria-expanded', true);
|
|
themePopup.querySelector("button#" + get_theme()).focus();
|
|
}
|
|
|
|
function hideThemes() {
|
|
themePopup.style.display = 'none';
|
|
themeToggleButton.setAttribute('aria-expanded', false);
|
|
themeToggleButton.focus();
|
|
}
|
|
|
|
function get_theme() {
|
|
var theme;
|
|
try { theme = localStorage.getItem('mdbook-theme'); } catch (e) { }
|
|
if (theme === null || theme === undefined) {
|
|
return default_theme;
|
|
} else {
|
|
return theme;
|
|
}
|
|
}
|
|
|
|
function set_theme(theme, store = true) {
|
|
let ace_theme;
|
|
|
|
if (theme == 'coal' || theme == 'navy') {
|
|
stylesheets.ayuHighlight.disabled = true;
|
|
stylesheets.tomorrowNight.disabled = false;
|
|
stylesheets.highlight.disabled = true;
|
|
|
|
ace_theme = "ace/theme/tomorrow_night";
|
|
} else if (theme == 'ayu') {
|
|
stylesheets.ayuHighlight.disabled = false;
|
|
stylesheets.tomorrowNight.disabled = true;
|
|
stylesheets.highlight.disabled = true;
|
|
ace_theme = "ace/theme/tomorrow_night";
|
|
} else {
|
|
stylesheets.ayuHighlight.disabled = true;
|
|
stylesheets.tomorrowNight.disabled = true;
|
|
stylesheets.highlight.disabled = false;
|
|
ace_theme = "ace/theme/dawn";
|
|
}
|
|
|
|
setTimeout(function () {
|
|
themeColorMetaTag.content = getComputedStyle(document.body).backgroundColor;
|
|
}, 1);
|
|
|
|
if (window.ace && window.editors) {
|
|
window.editors.forEach(function (editor) {
|
|
editor.setTheme(ace_theme);
|
|
});
|
|
}
|
|
|
|
var previousTheme = get_theme();
|
|
|
|
if (store) {
|
|
try { localStorage.setItem('mdbook-theme', theme); } catch (e) { }
|
|
}
|
|
|
|
html.classList.remove(previousTheme);
|
|
html.classList.add(theme);
|
|
}
|
|
|
|
// Set theme
|
|
var theme = get_theme();
|
|
|
|
set_theme(theme, false);
|
|
|
|
themeToggleButton.addEventListener('click', function () {
|
|
if (themePopup.style.display === 'block') {
|
|
hideThemes();
|
|
} else {
|
|
showThemes();
|
|
}
|
|
});
|
|
|
|
themePopup.addEventListener('click', function (e) {
|
|
var theme = e.target.id || e.target.parentElement.id;
|
|
set_theme(theme);
|
|
});
|
|
|
|
themePopup.addEventListener('focusout', function(e) {
|
|
// e.relatedTarget is null in Safari and Firefox on macOS (see workaround below)
|
|
if (!!e.relatedTarget && !themeToggleButton.contains(e.relatedTarget) && !themePopup.contains(e.relatedTarget)) {
|
|
hideThemes();
|
|
}
|
|
});
|
|
|
|
// Should not be needed, but it works around an issue on macOS & iOS: https://github.com/rust-lang/mdBook/issues/628
|
|
document.addEventListener('click', function(e) {
|
|
if (themePopup.style.display === 'block' && !themeToggleButton.contains(e.target) && !themePopup.contains(e.target)) {
|
|
hideThemes();
|
|
}
|
|
});
|
|
|
|
document.addEventListener('keydown', function (e) {
|
|
if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { return; }
|
|
if (!themePopup.contains(e.target)) { return; }
|
|
|
|
switch (e.key) {
|
|
case 'Escape':
|
|
e.preventDefault();
|
|
hideThemes();
|
|
break;
|
|
case 'ArrowUp':
|
|
e.preventDefault();
|
|
var li = document.activeElement.parentElement;
|
|
if (li && li.previousElementSibling) {
|
|
li.previousElementSibling.querySelector('button').focus();
|
|
}
|
|
break;
|
|
case 'ArrowDown':
|
|
e.preventDefault();
|
|
var li = document.activeElement.parentElement;
|
|
if (li && li.nextElementSibling) {
|
|
li.nextElementSibling.querySelector('button').focus();
|
|
}
|
|
break;
|
|
case 'Home':
|
|
e.preventDefault();
|
|
themePopup.querySelector('li:first-child button').focus();
|
|
break;
|
|
case 'End':
|
|
e.preventDefault();
|
|
themePopup.querySelector('li:last-child button').focus();
|
|
break;
|
|
}
|
|
});
|
|
})();
|
|
|
|
(function sidebar() {
|
|
var html = document.querySelector("html");
|
|
var sidebar = document.getElementById("sidebar");
|
|
var sidebarLinks = document.querySelectorAll('#sidebar a');
|
|
var sidebarToggleButton = document.getElementById("sidebar-toggle");
|
|
var sidebarResizeHandle = document.getElementById("sidebar-resize-handle");
|
|
var firstContact = null;
|
|
|
|
function showSidebar() {
|
|
html.classList.remove('sidebar-hidden')
|
|
html.classList.add('sidebar-visible');
|
|
Array.from(sidebarLinks).forEach(function (link) {
|
|
link.setAttribute('tabIndex', 0);
|
|
});
|
|
sidebarToggleButton.setAttribute('aria-expanded', true);
|
|
sidebar.setAttribute('aria-hidden', false);
|
|
try { localStorage.setItem('mdbook-sidebar', 'visible'); } catch (e) { }
|
|
}
|
|
|
|
|
|
var sidebarAnchorToggles = document.querySelectorAll('#sidebar a.toggle');
|
|
|
|
function toggleSection(ev) {
|
|
ev.currentTarget.parentElement.classList.toggle('expanded');
|
|
}
|
|
|
|
Array.from(sidebarAnchorToggles).forEach(function (el) {
|
|
el.addEventListener('click', toggleSection);
|
|
});
|
|
|
|
function hideSidebar() {
|
|
html.classList.remove('sidebar-visible')
|
|
html.classList.add('sidebar-hidden');
|
|
Array.from(sidebarLinks).forEach(function (link) {
|
|
link.setAttribute('tabIndex', -1);
|
|
});
|
|
sidebarToggleButton.setAttribute('aria-expanded', false);
|
|
sidebar.setAttribute('aria-hidden', true);
|
|
try { localStorage.setItem('mdbook-sidebar', 'hidden'); } catch (e) { }
|
|
}
|
|
|
|
// Toggle sidebar
|
|
sidebarToggleButton.addEventListener('click', function sidebarToggle() {
|
|
if (html.classList.contains("sidebar-hidden")) {
|
|
var current_width = parseInt(
|
|
document.documentElement.style.getPropertyValue('--sidebar-width'), 10);
|
|
if (current_width < 150) {
|
|
document.documentElement.style.setProperty('--sidebar-width', '150px');
|
|
}
|
|
showSidebar();
|
|
} else if (html.classList.contains("sidebar-visible")) {
|
|
hideSidebar();
|
|
} else {
|
|
if (getComputedStyle(sidebar)['transform'] === 'none') {
|
|
hideSidebar();
|
|
} else {
|
|
showSidebar();
|
|
}
|
|
}
|
|
});
|
|
|
|
sidebarResizeHandle.addEventListener('mousedown', initResize, false);
|
|
|
|
function initResize(e) {
|
|
window.addEventListener('mousemove', resize, false);
|
|
window.addEventListener('mouseup', stopResize, false);
|
|
html.classList.add('sidebar-resizing');
|
|
}
|
|
function resize(e) {
|
|
var pos = (e.clientX - sidebar.offsetLeft);
|
|
if (pos < 20) {
|
|
hideSidebar();
|
|
} else {
|
|
if (html.classList.contains("sidebar-hidden")) {
|
|
showSidebar();
|
|
}
|
|
pos = Math.min(pos, window.innerWidth - 100);
|
|
document.documentElement.style.setProperty('--sidebar-width', pos + 'px');
|
|
}
|
|
}
|
|
//on mouseup remove windows functions mousemove & mouseup
|
|
function stopResize(e) {
|
|
html.classList.remove('sidebar-resizing');
|
|
window.removeEventListener('mousemove', resize, false);
|
|
window.removeEventListener('mouseup', stopResize, false);
|
|
}
|
|
|
|
document.addEventListener('touchstart', function (e) {
|
|
firstContact = {
|
|
x: e.touches[0].clientX,
|
|
time: Date.now()
|
|
};
|
|
}, { passive: true });
|
|
|
|
document.addEventListener('touchmove', function (e) {
|
|
if (!firstContact)
|
|
return;
|
|
|
|
var curX = e.touches[0].clientX;
|
|
var xDiff = curX - firstContact.x,
|
|
tDiff = Date.now() - firstContact.time;
|
|
|
|
if (tDiff < 250 && Math.abs(xDiff) >= 150) {
|
|
if (xDiff >= 0 && firstContact.x < Math.min(document.body.clientWidth * 0.25, 300))
|
|
showSidebar();
|
|
else if (xDiff < 0 && curX < 300)
|
|
hideSidebar();
|
|
|
|
firstContact = null;
|
|
}
|
|
}, { passive: true });
|
|
|
|
// Scroll sidebar to current active section
|
|
var activeSection = document.getElementById("sidebar").querySelector(".active");
|
|
if (activeSection) {
|
|
// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
|
|
activeSection.scrollIntoView({ block: 'center' });
|
|
}
|
|
})();
|
|
</script>
|
|
|
|
</body>
|
|
|
|
</html>
|