Update shortcodes.js

This commit is contained in:
Vaica committed 2026-06-25 15:47:04 +08:00
1 parent eeb9d4ecf9
commit 1d55a17d00
1 file changed
+36 -17
+36 -17
View File
@@ -93,14 +93,23 @@ var AudioManager = {
} catch (e) {} } catch (e) {}
}, },
// 重置播放器到初始状态(刷新页面/非 PJAX 导航时调用)
reset: function() {
if (this.globalAudio) {
this.globalAudio.pause();
this.globalAudio.currentTime = 0;
this.globalAudio.src = '';
}
this.globalMusicSrc = null;
this.globalMusicCard = null;
sessionStorage.removeItem(this.STORAGE_KEY);
},
// 恢复播放状态 - 在 PJAX 切换后调用 // 恢复播放状态 - 在 PJAX 切换后调用
restorePlayingState: function() { restorePlayingState: function() {
var state = this.restoreFromSession(); var state = this.restoreFromSession();
if (!state || !state.src) { if (!state || !state.src) {
// 当前页面没有保存的状态,暂停播放 // 当前页面没有保存的状态,保持当前播放状态(继续播放)
if (this.globalAudio && !this.globalAudio.paused) {
this.globalAudio.pause();
}
return; return;
} }
@@ -119,10 +128,7 @@ var AudioManager = {
} }
if (!targetCard) { if (!targetCard) {
// 当前页面没有这个音乐卡片,暂停播放 // 当前页面没有这个音乐卡片,保持当前播放状态(继续播放)
if (this.globalAudio && !this.globalAudio.paused) {
this.globalAudio.pause();
}
return; return;
} }
@@ -131,7 +137,7 @@ var AudioManager = {
this.globalMusicCard = targetCard; this.globalMusicCard = targetCard;
this.globalAudio.src = state.src; this.globalAudio.src = state.src;
// 更新 UI // 更新 UI(恢复原来的播放状态)
this._updateUI(targetCard, state.isPlaying); this._updateUI(targetCard, state.isPlaying);
// 等待元数据加载完成 // 等待元数据加载完成
@@ -144,7 +150,8 @@ var AudioManager = {
self._onTimeUpdate(); self._onTimeUpdate();
if (state.isPlaying) { // 如果之前在播放,继续播放
if (state.isPlaying && self.globalAudio.paused) {
self.globalAudio.play().catch(function() {}); self.globalAudio.play().catch(function() {});
} }
}); });
@@ -154,7 +161,8 @@ var AudioManager = {
this.globalAudio.currentTime = state.currentTime; this.globalAudio.currentTime = state.currentTime;
} }
this._onTimeUpdate(); this._onTimeUpdate();
if (state.isPlaying) { // 如果之前在播放,继续播放
if (state.isPlaying && this.globalAudio.paused) {
this.globalAudio.play().catch(function() {}); this.globalAudio.play().catch(function() {});
} }
} }
@@ -751,17 +759,25 @@ function cleanupAllShortcodes() {
// ============================================================ // ============================================================
function initAllShortcodes() { function initAllShortcodes() {
// 初始化 AudioManager(创建全局音频元素,恢复播放状态) // 初始化 AudioManager(创建全局音频元素)
AudioManager.init(); AudioManager.init();
initLivePhotoShortcodes(); initLivePhotoShortcodes();
initVoiceBubbles(); initVoiceBubbles();
initMusicCards(); initMusicCards();
// 恢复 PJAX 切换前的播放状态 // 检查是否是 PJAX 导航
setTimeout(function() { if (window.__isPjaxNavigation) {
AudioManager.restorePlayingState(); // PJAX 导航:恢复播放状态(进度和播放状态)
}, 100); setTimeout(function() {
AudioManager.restorePlayingState();
}, 100);
// 重置标志
window.__isPjaxNavigation = false;
} else {
// 非 PJAX 导航(刷新页面/跳转):重置播放器到初始状态
AudioManager.reset();
}
} }
// DOMContentLoaded // DOMContentLoaded
@@ -776,7 +792,10 @@ if (document.readyState === 'interactive' || document.readyState === 'complete')
} }
// PJAX support - cleanup before and re-initialize after page transition // PJAX support - cleanup before and re-initialize after page transition
document.addEventListener('pjax:beforeSend', cleanupAllShortcodes); document.addEventListener('pjax:beforeSend', function() {
window.__isPjaxNavigation = true;
cleanupAllShortcodes();
});
document.addEventListener('pjax:complete', initAllShortcodes); document.addEventListener('pjax:complete', initAllShortcodes);
document.addEventListener('pjax:success', initAllShortcodes); document.addEventListener('pjax:success', initAllShortcodes);