fixed 工具栏bug 修复

This commit is contained in:
Vaica committed 2026-01-31 21:50:00 +08:00
1 parent 8c3232fadf
commit 534ed6842b
2 files changed
+94 -13

No files matched your search

+76 -11
View File
@@ -1,4 +1,38 @@
window.initFloatingTools = function() {
try {
// 0. Global Toolbar Visibility (Homepage Check)
var container = document.querySelector('.floating-tools');
// Robust Homepage Check:
// 1. Check for Homepage-specific element (.recent-posts)
// 2. Ensure NOT on a Post page (.post-content)
// 3. Fallback: Check pathname (only if DOM check is ambiguous)
var hasRecentPosts = document.querySelector('.recent-posts');
var hasPostContent = document.querySelector('.post-content');
var isHomePage = false;
if (hasRecentPosts && !hasPostContent) {
isHomePage = true;
} else if (!hasRecentPosts && !hasPostContent) {
// Could be Archive or Custom Page. Check Path.
var path = window.location.pathname;
if (path === '/' || path === '/index.html' || path.startsWith('/page/')) {
isHomePage = true;
}
}
if (container) {
if (isHomePage) {
container.style.display = 'none';
// Do not return here, let other logic run in case we need to reset state
// But for performance, we can skip binding if hidden?
// No, better to bind so if it becomes visible later (unlikely without PJAX) it works.
// Actually, with PJAX, this function runs again. So we can just hide it.
} else {
container.style.display = ''; // Restore display
}
}
// 1. Back to Top
var backToTopButton = document.getElementById('back-to-top');
if (backToTopButton) {
@@ -8,6 +42,7 @@ window.initFloatingTools = function() {
var btn = document.getElementById('back-to-top');
if (!btn) return;
// Only show if NOT on homepage (redundant if container is hidden, but good for safety)
if (window.scrollY > 300) {
if (!btn.classList.contains('show')) {
btn.classList.add('show');
@@ -20,7 +55,7 @@ window.initFloatingTools = function() {
ticking = false;
}
// Global Scroll Handler
// Global Scroll Handler (Singleton)
if (!window.backToTopScrollHandler) {
window.backToTopScrollHandler = function() {
if (!ticking) {
@@ -31,11 +66,15 @@ window.initFloatingTools = function() {
window.addEventListener('scroll', window.backToTopScrollHandler, { passive: true });
}
// Re-bind click event
var newBtn = backToTopButton.cloneNode(true);
if (backToTopButton.parentNode) {
backToTopButton.parentNode.replaceChild(newBtn, backToTopButton);
backToTopButton = newBtn;
}
// Initialize state immediately
update();
backToTopButton.addEventListener('click', function(e) {
e.preventDefault();
@@ -50,8 +89,10 @@ window.initFloatingTools = function() {
var themeToggle = document.getElementById('theme-toggle');
if (themeToggle) {
var newToggle = themeToggle.cloneNode(true);
if (themeToggle.parentNode) {
themeToggle.parentNode.replaceChild(newToggle, themeToggle);
themeToggle = newToggle;
}
// Update icon based on current theme
var updateIcon = function() {
@@ -75,7 +116,7 @@ window.initFloatingTools = function() {
updateIcon();
// Trigger Artalk theme update
if (window.artalk) {
if (window.artalk && typeof window.artalk.setDarkMode === 'function') {
window.artalk.setDarkMode(newTheme === 'dark');
}
});
@@ -84,23 +125,47 @@ window.initFloatingTools = function() {
// 3. To Comments
var toComments = document.getElementById('to-comments');
if (toComments) {
// Logic: Only show if comments section exists
var checkCommentVisibility = function(btn) {
if (!btn) return;
var hasComments = document.getElementById('Comments') || document.querySelector('.artalk');
if (hasComments) {
btn.style.display = ''; // Show
} else {
btn.style.display = 'none'; // Hide
}
};
// Initial check
checkCommentVisibility(toComments);
var newToComments = toComments.cloneNode(true);
if (toComments.parentNode) {
toComments.parentNode.replaceChild(newToComments, toComments);
toComments = newToComments;
}
// Re-run check on new element
checkCommentVisibility(toComments);
// Double-check after a delay for PJAX/Async rendering
setTimeout(function() {
var currentBtn = document.getElementById('to-comments');
if (currentBtn) {
checkCommentVisibility(currentBtn);
}
}, 500);
toComments.addEventListener('click', function(e) {
e.preventDefault();
var comments = document.getElementById('Comments');
var comments = document.getElementById('Comments') || document.querySelector('.artalk');
if (comments) {
comments.scrollIntoView({ behavior: 'smooth' });
} else {
var artalkEl = document.querySelector('.artalk');
if (artalkEl) {
artalkEl.scrollIntoView({ behavior: 'smooth' });
} else {
window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' });
}
}
});
}
} catch (e) {
console.error('Error in initFloatingTools:', e);
}
};
+18 -2
View File
@@ -96,25 +96,41 @@ document.addEventListener("pjax:complete", function () {
// 初始化段落评论
if (typeof window.initParagraphComments === 'function') {
try {
window.initParagraphComments();
} catch(e) { console.error('initParagraphComments error:', e); }
}
// 初始化友链状态
if (typeof window.initLinkStatus === 'function') {
try {
window.initLinkStatus();
} catch(e) { console.error('initLinkStatus error:', e); }
}
// 重载评论
if (typeof window.initArtalk === 'function') {
try {
window.initArtalk();
} catch(e) { console.error('initArtalk error:', e); }
}
// 重载不蒜子统计
if (typeof window.bsz_fetch === 'function') {
try {
window.bsz_fetch();
} catch(e) { console.error('bsz_fetch error:', e); }
}
// 重载 Search 和 Floating Tools (Moved from main.js)
if (typeof window.initFloatingTools === 'function') window.initFloatingTools();
if (typeof window.initSearch === 'function') window.initSearch();
if (typeof window.initFloatingTools === 'function') {
try {
window.initFloatingTools();
} catch(e) { console.error('initFloatingTools error:', e); }
}
if (typeof window.initSearch === 'function') {
try {
window.initSearch();
} catch(e) { console.error('initSearch error:', e); }
}
});