mirror of
https://github.com/jerryc127/hexo-theme-butterfly.git
synced 2026-08-10 20:48:42 +08:00
feat: add wordcount helpers, waline lightbox, and extensive bug fixes
- wordcount/min2read/totalcount built-in helpers (replaces hexo-wordcount) - cloudTags random sort support - waline lightbox via MutationObserver - subtitle: seq guard prevents stale API response race - newest-comments: escapeHtml XSS fix, unified fetchAndRender with cache fallback - katex: try/catch asset load, encrypt re-render - chartjs: destroy charts on pjax, fix theme property check - mathjax: DOMContentLoaded instead of load - mermaid: clean stale error elements - medium-zoom: single instance, detach on pjax - getScrollPercent: WeakMap cache with resize invalidation - overflowPaddingR: avoid stale DOM refs - readmode: dedupe button, pjax cleanup - hexo-blog-decrypt: null-guard translateFn and encryptFn - tw_cn: expand skipped translate tags - localStorage: try/catch setItem - cdn.js: fix [lib|dist]* character class regex bug - findArchivesTitle: support custom archive_dir - shuoshuoFN: guard moment.tz when timezone empty - umami: no-store cache, error handling, path param - artalk: vote config option - bump version 5.7.1.260810
This commit is contained in:
+9
-3
@@ -622,7 +622,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
const currentTop = window.scrollY || document.documentElement.scrollTop
|
||||
|
||||
if (isToc && GLOBAL_CONFIG.percent.toc) {
|
||||
$tocPercentage.textContent = btf.getScrollPercent(currentTop, $article)
|
||||
$tocPercentage.textContent = btf.getScrollPercent(currentTop, $article, false)
|
||||
}
|
||||
|
||||
if (currentTop === 0) {
|
||||
@@ -662,6 +662,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
*/
|
||||
const rightSideFn = {
|
||||
readmode: () => { // read mode
|
||||
if (document.querySelector('.exit-readmode')) return
|
||||
const $body = document.body
|
||||
const newEle = document.createElement('button')
|
||||
|
||||
@@ -677,6 +678,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
newEle.innerHTML = '<i class="fas fa-sign-out-alt"></i>'
|
||||
newEle.addEventListener('click', exitReadMode)
|
||||
$body.appendChild(newEle)
|
||||
btf.addGlobalFn('pjaxSendOnce', exitReadMode, 'exitReadMode')
|
||||
},
|
||||
darkmode: () => { // switch between light and dark mode
|
||||
const willChangeMode = document.documentElement.getAttribute('data-theme') === 'dark' ? 'light' : 'dark'
|
||||
@@ -1010,8 +1012,12 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
// 處理 hexo-blog-encrypt 事件
|
||||
window.addEventListener('hexo-blog-decrypt', e => {
|
||||
forPostFn()
|
||||
window.translateFn.translateInitialization()
|
||||
Object.values(window.globalFn.encrypt).forEach(fn => {
|
||||
if (window.translateFn && typeof window.translateFn.translateInitialization === 'function') {
|
||||
window.translateFn.translateInitialization()
|
||||
}
|
||||
|
||||
const encryptFn = window.globalFn && window.globalFn.encrypt ? window.globalFn.encrypt : {}
|
||||
Object.values(encryptFn).forEach(fn => {
|
||||
fn()
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user