fixed 昼夜切换 bug

This commit is contained in:
Vaica committed 2026-01-29 20:33:30 +08:00
1 parent aaf8813d8b
commit 7de8d0e253
6 files changed
+211 -122

No files matched your search

+15 -15
View File
@@ -61,6 +61,7 @@
this.index = 0;
this.timer = null;
this.isPaused = false;
this.isDestroyed = false;
}
// 开始发送
@@ -70,11 +71,13 @@
if (this.data.length === 0) return;
this.clear();
this.isDestroyed = false;
this.loop();
}
// 清空
clear() {
this.isDestroyed = true;
if (this.timer) clearTimeout(this.timer);
// 清除容器内所有弹幕元素
if (this.container) {
@@ -86,18 +89,12 @@
// 循环发射
loop() {
// 如果容器不在文档中(PJAX切换后),尝试重新获取容器
// (注意:this.container 是 DOM 引用,如果页面重绘,旧引用可能失效)
if (this.isDestroyed) return;
// 如果容器不在文档中(PJAX切换后),停止播放
if (!document.body.contains(this.container)) {
console.warn('[Barrage] 容器失效,尝试重新获取...');
const newContainer = document.querySelector('.barrager');
if (newContainer) {
this.container = newContainer;
console.log('[Barrage] 容器重新获取成功,继续播放');
} else {
console.warn('[Barrage] 容器彻底丢失,停止播放');
return; // 真的没了再停止
}
console.warn('[Barrage] 容器失效,停止播放');
return;
}
// 发射逻辑
@@ -285,15 +282,18 @@
console.error('加载弹幕时发生错误:', error);
}
}
// 暴露给全局,供 mypjax.js 调用
window.loadBarrager = loadBarrager;
// 初始化监听
document.addEventListener('DOMContentLoaded', function() {
loadBarrager(); // 页面首次加载时启动弹幕
});
document.addEventListener('pjax:complete', function() {
// PJAX 跳转后重新加载弹幕
loadBarrager();
});
// 移除内部的 pjax:complete 监听,统一由 mypjax.js 控制调用时机
// document.addEventListener('pjax:complete', function() {
// loadBarrager();
// });
})();