recorder.py aktualisiert
This commit is contained in:
+19
-6
@@ -1057,32 +1057,45 @@ function savePlaybackPosition(audio) {
|
||||
|
||||
function restorePlaybackPosition(audio) {
|
||||
const key = playbackKey(audio);
|
||||
if (!key) return;
|
||||
if (!key) return false;
|
||||
|
||||
try {
|
||||
const saved = JSON.parse(localStorage.getItem(key) || 'null');
|
||||
if (!saved || !Number.isFinite(saved.position) || saved.position <= 0) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Erst setzen, wenn die Metadaten/Dauer bekannt sind.
|
||||
// Bei preload=none kann loadedmetadata erst beim ersten Abspielen
|
||||
// eintreten. Deshalb wird diese Funktion auch von play/canplay
|
||||
// aufgerufen.
|
||||
if (Number.isFinite(audio.duration) && audio.duration > 0) {
|
||||
const position = Math.min(saved.position, Math.max(0, audio.duration - 0.5));
|
||||
if (position > 0) {
|
||||
audio.currentTime = position;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn('Wiedergabeposition konnte nicht wiederhergestellt werden:', error);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
document.querySelectorAll('.finished-row audio').forEach(audio => {
|
||||
let lastSaved = 0;
|
||||
let positionRestored = false;
|
||||
|
||||
audio.addEventListener('loadedmetadata', () => {
|
||||
restorePlaybackPosition(audio);
|
||||
});
|
||||
const tryRestorePlaybackPosition = () => {
|
||||
if (!positionRestored) {
|
||||
positionRestored = restorePlaybackPosition(audio);
|
||||
}
|
||||
};
|
||||
|
||||
audio.addEventListener('loadedmetadata', tryRestorePlaybackPosition);
|
||||
audio.addEventListener('loadeddata', tryRestorePlaybackPosition);
|
||||
audio.addEventListener('canplay', tryRestorePlaybackPosition);
|
||||
audio.addEventListener('play', tryRestorePlaybackPosition);
|
||||
|
||||
audio.addEventListener('timeupdate', () => {
|
||||
const now = Date.now();
|
||||
|
||||
Reference in New Issue
Block a user