MediaWiki:Common.js: Difference between revisions
From Descendants of Darkness Wiki
No edit summary |
No edit summary |
||
| Line 4: | Line 4: | ||
function saveSidebarScrollPosition() { | function saveSidebarScrollPosition() { | ||
var scrollPosition = document.getElementById(sidebarId).scrollTop; | var scrollPosition = document.getElementById(sidebarId).scrollTop; | ||
sessionStorage.setItem('sidebarScrollPosition', scrollPosition); | |||
} | } | ||
function restoreSidebarScrollPosition() { | function restoreSidebarScrollPosition() { | ||
var scrollPosition = | var scrollPosition = sessionStorage.getItem('sidebarScrollPosition'); | ||
if (scrollPosition !== null) { | if (scrollPosition !== null) { | ||
document.getElementById(sidebarId).scrollTop = parseInt(scrollPosition); | document.getElementById(sidebarId).scrollTop = parseInt(scrollPosition); | ||
| Line 14: | Line 14: | ||
} | } | ||
// Enable manual scroll restoration | |||
if ('scrollRestoration' in history) { | |||
history.scrollRestoration = 'manual'; | |||
} | |||
// Save scroll position before unloading the page | |||
window.addEventListener('beforeunload', saveSidebarScrollPosition); | window.addEventListener('beforeunload', saveSidebarScrollPosition); | ||
// Restore scroll position when the page is loaded | |||
window.addEventListener('load', restoreSidebarScrollPosition); | |||
// Save scroll position when clicking on sidebar links or headings | |||
var sidebarLinks = document.querySelectorAll('#' + sidebarId + ' a'); | var sidebarLinks = document.querySelectorAll('#' + sidebarId + ' a'); | ||
sidebarLinks.forEach(function (link) { | sidebarLinks.forEach(function (link) { | ||
link.addEventListener('click', | link.addEventListener('click', saveSidebarScrollPosition); | ||
}); | }); | ||
var sidebarHeadings = document.querySelectorAll('#' + sidebarId + ' .sidebar-heading'); | var sidebarHeadings = document.querySelectorAll('#' + sidebarId + ' .sidebar-heading'); | ||
sidebarHeadings.forEach(function (heading) { | sidebarHeadings.forEach(function (heading) { | ||
heading.addEventListener('click', | heading.addEventListener('click', saveSidebarScrollPosition); | ||
}); | }); | ||
})(); | })(); | ||
Revision as of 00:08, 14 April 2024
(function () {
var sidebarId = 'mw-navigation';
function saveSidebarScrollPosition() {
var scrollPosition = document.getElementById(sidebarId).scrollTop;
sessionStorage.setItem('sidebarScrollPosition', scrollPosition);
}
function restoreSidebarScrollPosition() {
var scrollPosition = sessionStorage.getItem('sidebarScrollPosition');
if (scrollPosition !== null) {
document.getElementById(sidebarId).scrollTop = parseInt(scrollPosition);
}
}
// Enable manual scroll restoration
if ('scrollRestoration' in history) {
history.scrollRestoration = 'manual';
}
// Save scroll position before unloading the page
window.addEventListener('beforeunload', saveSidebarScrollPosition);
// Restore scroll position when the page is loaded
window.addEventListener('load', restoreSidebarScrollPosition);
// Save scroll position when clicking on sidebar links or headings
var sidebarLinks = document.querySelectorAll('#' + sidebarId + ' a');
sidebarLinks.forEach(function (link) {
link.addEventListener('click', saveSidebarScrollPosition);
});
var sidebarHeadings = document.querySelectorAll('#' + sidebarId + ' .sidebar-heading');
sidebarHeadings.forEach(function (heading) {
heading.addEventListener('click', saveSidebarScrollPosition);
});
})();