Template:AudioPlayer: Difference between revisions
From Tuyin Archives
No edit summary |
No edit summary |
||
| Line 4: | Line 4: | ||
var playerId = 'player_' + Math.random().toString(36).substr(2, 9); | var playerId = 'player_' + Math.random().toString(36).substr(2, 9); | ||
var audioFile = new Audio(); | var audioFile = new Audio(); | ||
audioFile.src = 'https://tuyin.online/images/{{{1}}}'; | audioFile.src = 'https://tuyin.online/images/{{{1}}}'; | ||
audioFile.preload = 'metadata'; | audioFile.preload = 'metadata'; | ||
function updateProgress() { | |||
var progress = document.getElementById(playerId + '_progress'); | var progress = document.getElementById(playerId + '_progress'); | ||
if (progress && audioFile.duration) { | if (progress && audioFile.duration) { | ||
progress.style.width = ((audioFile.currentTime / audioFile.duration) * 100) + '%'; | progress.style.width = ((audioFile.currentTime / audioFile.duration) * 100) + '%'; | ||
} | } | ||
} | } | ||
function resetPlayer() { | |||
document.getElementById(playerId + '_btn').innerHTML = '▶️'; | |||
document.getElementById(playerId + '_progress').style.width = '0%'; | |||
} | |||
} | |||
document.addEventListener('DOMContentLoaded', function() { | document.addEventListener('DOMContentLoaded', function() { | ||
document.getElementById(playerId + '_btn'). | var button = document.getElementById(playerId + '_btn'); | ||
button.addEventListener('click', function() { | |||
if (audioFile.paused || audioFile.ended) { | |||
audioFile.play().then(() => { | |||
button.innerHTML = '⏸️'; | |||
}).catch((e) => { | |||
alert("Could not play audio: " + e.message); | |||
}); | |||
} else { | |||
audioFile.pause(); | |||
button.innerHTML = '▶️'; | |||
} | |||
}); | |||
audioFile.addEventListener('timeupdate', updateProgress); | |||
audioFile.addEventListener('ended', resetPlayer); | |||
}); | }); | ||
Revision as of 19:56, 23 July 2025
