diff --git a/web/src/components/DanmakuStage.tsx b/web/src/components/DanmakuStage.tsx index 3b8d197..71d6048 100644 --- a/web/src/components/DanmakuStage.tsx +++ b/web/src/components/DanmakuStage.tsx @@ -128,6 +128,9 @@ export function DanmakuStage({ const loadDanmaku = async () => { let loadedInfo: DanmakuLoadedInfo | null = null + comments = [] + nextIndex = 0 + manager.clear() try { const res = await danmakuAPI.fetch(media.id, { kw: search ?? undefined, diff --git a/web/src/pages/PlayerPage.tsx b/web/src/pages/PlayerPage.tsx index b6a6d53..566c572 100644 --- a/web/src/pages/PlayerPage.tsx +++ b/web/src/pages/PlayerPage.tsx @@ -168,6 +168,17 @@ export function PlayerPage() { setDanmakuInfo(null) }, []) + // 切换视频时重置媒体与弹幕状态,确保新视频自动重新识别并加载弹幕 + useEffect(() => { + setMedia(null) + setDanmakuEpisodeId(null) + setDanmakuCandidates([]) + setDanmakuSearch(null) + setDanmakuSelectedSource('') + setDanmakuInfo(null) + setDanmakuSearching(true) + }, [id]) + // Load metadata and pick a default mode. useEffect(() => { if (!id) return diff --git a/web/src/pages/PlayerVideoStage.tsx b/web/src/pages/PlayerVideoStage.tsx index 9f43026..2df781b 100644 --- a/web/src/pages/PlayerVideoStage.tsx +++ b/web/src/pages/PlayerVideoStage.tsx @@ -249,6 +249,7 @@ export function PlayerVideoStage({ ))}