// 判断是否为移动端 function isMobile() { if (window.navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)) { return true; // 移动端 } else { return false; // PC端 } } // 文章图片灯箱 window.ViewImage && ViewImage.init('.post-content img'); // 激活返回顶部插件 $(function () { $.scrollUp({ animation: 'fade', scrollImg: true }); }); // loader定时器 $(document).ready(function () { setTimeout(function () { $("#loader").addClass("hide"); }, 30000); }); // 点击进入按钮 $("#closeloader").click(function () { $("#loader").addClass("hide"); }); // nav栏样式调整 $('#libabys').first().attr("style", "margin-left: -5px"); $('#libabys').eq(1).attr("style", "margin-left: -5px"); // 友链列表版样式调整 $('.itp-index:odd').attr("style", "float: right;width:48%;"); //文章图片懒加载 lazyLoadInit({ // coverColor: "white", // coverDiv: "
优世界·一个记录生活点滴的小站
", offsetBottom: 800, offsetTopm: 800, showTime: 1100 }); async function loadBarrager() { try { const commentsData = await initArtalkAndGetComments(); if (commentsData) { await createBarragerFromArtalk(commentsData); } } catch (error) { console.error('加载弹幕时发生错误:', error); } } // 异步初始化 Artalk 并获取评论数据 function initArtalkAndGetComments() { return new Promise((resolve, reject) => { Artalk.use((ctx) => { ctx.on('list-loaded', () => { console.log('评论列表加载完毕'); const commentsData = ctx.getComments(); if (commentsData) { resolve(commentsData); // console.log(commentsData); } else { reject('获取评论数据失败'); } }); }); Artalk.init({ el: '#Comments', // 绑定元素的 Selector server: 'https://artalk.usj.cc', // 后端地址 site: '优世界', // 你的站点名 flatMode: true, emoticons: '/emotion/OwO.json' }); }); } // 异步创建弹幕 async function createBarragerFromArtalk(commentsData) { const looperTime = 1000; // 每条弹幕的发送间隔,单位毫秒 const flattenedComments = flattenComments(commentsData); const totalComments = flattenedComments.length; let currentIndex = 0; // 初始化弹幕插件 let barrage = new Barrage.default({ el: 'body', backColor: "#000000b5", fontSize: "14px", isLeft: true, speed: 0, height: "33px" }); if (totalComments !== 0) { while (currentIndex < totalComments) { const currentComment = flattenedComments[currentIndex]; const barragerItem = { headImg: "https://cravatar.cn/avatar/"+currentComment.email_encrypted + "?s=33" || 'static/default-avatar.png', content: stripHTML(currentComment.content_marked) || 'No comment', href: currentComment.link || '#', speed: 10 }; // 发送弹幕 barrage.start(barragerItem.content, { speed: barragerItem.speed, headImg: barragerItem.headImg, speed: 35 }); currentIndex++; await delay(looperTime); // 等待指定的时间再发送下一条弹幕 } } } // 延迟函数,返回一个 Promise,用于等待指定的毫秒数 function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } // 去除 HTML 标签的函数 function stripHTML(html) { return html.replace(/<\/?[^>]+(>|$)/g, ""); } // 展平评论数据结构的函数 function flattenComments(comments) { let result = []; comments.forEach(function (comment) { result.push(comment); if (comment.children && comment.children.length > 0) { result = result.concat(flattenComments(comment.children)); } }); return result; } // 调用异步的弹幕加载函数 if (document.querySelector("#Comments") && !isMobile()) { loadBarrager() } function getCurrentTheme() { var theme = document.documentElement.getAttribute('data-theme'); if (!theme) { theme = 'light'; } return theme; } function applyTheme(theme) { document.documentElement.setAttribute('data-theme', theme); try { localStorage.setItem('theme', theme); } catch (e) {} } function updateThemeToggle(theme) { var button = document.getElementById('theme-toggle'); if (theme === 'dark') { if (button) { button.textContent = '日间'; } } else { if (button) { button.textContent = '夜间'; } } } function toggleTheme() { var current = getCurrentTheme(); var next = current === 'dark' ? 'light' : 'dark'; applyTheme(next); updateThemeToggle(next); if (window.Artalk && window.Artalk.get) { try { var ctx = Artalk.get('#Comments'); if (ctx && ctx.setDarkMode) { ctx.setDarkMode(next === 'dark'); } } catch (e) {} } } document.addEventListener('DOMContentLoaded', function () { var theme = getCurrentTheme(); updateThemeToggle(theme); var button = document.getElementById('theme-toggle'); if (button) { button.addEventListener('click', toggleTheme); } var avatarWrapper = document.querySelector('.head_author_img'); var avatarTip = document.querySelector('.avatar-theme-tip'); if (avatarWrapper) { avatarWrapper.style.cursor = 'pointer'; avatarWrapper.addEventListener('click', toggleTheme); } if (avatarTip) { avatarTip.classList.add('is-visible'); var hideOnce = function () { avatarTip.classList.add('is-hidden'); }; setTimeout(hideOnce, 9000); if (avatarWrapper) { avatarWrapper.addEventListener('click', hideOnce); } } });