2025-2-26-fixed
This commit is contained in:
56
themes/next/source/js/bookmark.js
Normal file
56
themes/next/source/js/bookmark.js
Normal file
@@ -0,0 +1,56 @@
|
||||
/* global CONFIG */
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
'use strict';
|
||||
|
||||
var doSaveScroll = () => {
|
||||
localStorage.setItem('bookmark' + location.pathname, window.scrollY);
|
||||
};
|
||||
|
||||
var scrollToMark = () => {
|
||||
var top = localStorage.getItem('bookmark' + location.pathname);
|
||||
top = parseInt(top, 10);
|
||||
// If the page opens with a specific hash, just jump out
|
||||
if (!isNaN(top) && location.hash === '') {
|
||||
// Auto scroll to the position
|
||||
window.anime({
|
||||
targets : document.scrollingElement,
|
||||
duration : 200,
|
||||
easing : 'linear',
|
||||
scrollTop: top
|
||||
});
|
||||
}
|
||||
};
|
||||
// Register everything
|
||||
var init = function(trigger) {
|
||||
// Create a link element
|
||||
var link = document.querySelector('.book-mark-link');
|
||||
// Scroll event
|
||||
window.addEventListener('scroll', () => link.classList.toggle('book-mark-link-fixed', window.scrollY === 0));
|
||||
// Register beforeunload event when the trigger is auto
|
||||
if (trigger === 'auto') {
|
||||
// Register beforeunload event
|
||||
window.addEventListener('beforeunload', doSaveScroll);
|
||||
window.addEventListener('pjax:send', doSaveScroll);
|
||||
}
|
||||
// Save the position by clicking the icon
|
||||
link.addEventListener('click', () => {
|
||||
doSaveScroll();
|
||||
window.anime({
|
||||
targets : link,
|
||||
duration: 200,
|
||||
easing : 'linear',
|
||||
top : -30,
|
||||
complete: () => {
|
||||
setTimeout(() => {
|
||||
link.style.top = '';
|
||||
}, 400);
|
||||
}
|
||||
});
|
||||
});
|
||||
scrollToMark();
|
||||
window.addEventListener('pjax:success', scrollToMark);
|
||||
};
|
||||
|
||||
init(CONFIG.bookmark.save);
|
||||
});
|
||||
Reference in New Issue
Block a user