fixed 弹幕修复

This commit is contained in:
Vaica committed 2026-01-26 23:09:57 +08:00
1 parent eddfac9a7b
commit dd642782b4
8 files changed
+417 -135

No files matched your search

+10 -78
View File
@@ -79,81 +79,9 @@ if (typeof lazyLoadInit === 'function') {
console.warn('lazyLoadInit is not defined');
}
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 并获取评论数据 (Moved to barrage.js)
// 从 Artalk 评论数据生成弹幕
async function createBarragerFromArtalk(commentsData) {
// 确保弹幕容器存在
const barragerContainer = document.querySelector('.barrager');
if (!barragerContainer) {
console.warn('未找到弹幕容器 .barrager');
return;
}
// 1. 过滤和处理评论数据 (只保留昵称和内容)
const barrageList = commentsData.map(comment => {
// 简单清理 HTML 标签,保留纯文本 (可选)
const contentText = comment.content.replace(/<[^>]+>/g, "").substring(0, 50); // 限制长度
return {
info: contentText, // 弹幕内容
href: '#', // 链接 (可选,点击弹幕跳转)
speed: 10 + Math.random() * 5, // 随机速度
color: '#fff', // 字体颜色 (白色)
old_ie_color: '#000000', // 旧版 IE 颜色
};
}).filter(item => item.info.trim() !== ""); // 过滤空评论
// 如果没有评论,则不显示弹幕
if (barrageList.length === 0) {
return;
}
// 2. 初始化 jQuery.barrager (如果尚未初始化)
// 注意:这里假设 jquery.barrager.js 已经加载并挂载到 jQuery 对象上
// 由于 barrager 插件通常是直接操作 DOM,我们可能需要循环添加
// 简单的循环发送弹幕示例 (每隔一段时间发送一条)
let index = 0;
const sendBarrage = () => {
if (index >= barrageList.length) {
index = 0; // 循环播放
}
const item = barrageList[index];
// 使用 jQuery 选择器调用 barrager
$('body').barrager(item);
index++;
};
// 每 2 秒发送一条弹幕
setInterval(sendBarrage, 2000);
}
async function fetchHitokoto() {
@@ -225,11 +153,11 @@ function initCodeCopy() {
});
}
// 页面加载完成后初始化
document.addEventListener('DOMContentLoaded', function() {
initCodeCopy();
initDescriptionHitokoto();
});
// 页面加载完成后初始化 (Merged into main DOMContentLoaded listener)
// document.addEventListener('DOMContentLoaded', function() {
// initCodeCopy();
// initDescriptionHitokoto();
// });
// 初始化个人描述一言切换
function initDescriptionHitokoto() {
@@ -367,11 +295,15 @@ function initFloatingTools() {
document.addEventListener('pjax:complete', function() {
updateFloatingToolsVisibility();
hideSelectionPopup();
// PJAX 跳转后重新加载弹幕 (Moved to barrage.js)
});
document.addEventListener('DOMContentLoaded', function() {
initFloatingTools();
initSelectionPopup();
initCodeCopy();
initDescriptionHitokoto();
// 页面首次加载时启动弹幕 (Moved to barrage.js)
});
// Selection Popup Logic