Update shortcodes.js
This commit is contained in:
1 parent
eeb9d4ecf9
commit
1d55a17d00
1 file changed
+36
-17
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user