Bonjour,

Je rencontre un petit souci sur lequel je n'arrive pas à trouver la solution ! Je cherche donc un peu d'aide.
Je suis en train de faire un lecteur audio, le principe est assez simple :

Sur ma page, il y a plusieurs liens... Quand on clic sur un lien, cela ouvre une fenetre modal et on peut jouer un fichier audio.
Chaque lien joue un fichier different.

Jusque là, pas de problème... Pour mon premier lien tout fonctionne bien.
Clic > Appel de la fonction pour charger le fichier audio > Clic sur le bouton play/pause pour jouer le fichier : OK
Le lecteur charge bien le fichier, je vois la durée du fichier, je peux avancer et reculer sur la "timeline", le play/pause s'actualise bien : tout est OK.

Le problème : Lorsque je ferme la première fenêtre et que je clique sur un deuxième lien... je peux jouer le fichier mais aucune actualisation de la timeline du fichier, cela reste à 0 (je peux par contre avancer et reculer) et aucune actualisation du bouton play/pause...

Une idée ? Je ne comprends pas pourquoi cette partie ne s'actualise pas...
Voici mon code :

Appel des fonctions :

Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 <a  href="#med1" onclick="un()">
</a>
 
 
    <a href="#med2" onclick="deux()">
 </a>

Fenêtres modales :

Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 <div id="med1" class="modalDialog">
    <div class="modal-text">
      <a href="#close" title="Close" class="link-2" onclick="stopTrack()"></a>
      <div class="modal__details">
            <h1 class="modal__title"> Titre 1 </h1>
            <p class="modal__description">Séance 1</p>
            <audio src="meds/1_souffle_se.mp3" class="audio"></audio>
            <div class="player">
                 <div class="buttons">
                   <div class="playpause-track" onclick="playpauseTrack()"><i class="fa fa-play-circle fa-5x"></i></div>
                 </div>
                 <div class="slider_container">
                   <div class="current-time">00:00</div>
                   <input type="range" min="1" max="100" value="0" class="seek_slider" onchange="seekTo()">
                   <div class="total-duration">00:00</div>
                 </div>
                 <div class="slider_container">
                   <i class="fa fa-volume-down"></i>
                   <input type="range" min="1" max="100" value="99" class="volume_slider" onchange="setVolume()">
                   <i class="fa fa-volume-up"></i>
                 </div>
       </div>
          </div>
          <a href="#close" title="Close" class="" onclick="stopTrack()"> J'ai terminé cette séance. </a>
    </div>
 
    </div>
 
<!-- SEANCE 2 -->
 
  <div id="med2" class="modalDialog">
    <div class="modal-text">
            <a href="#close" title="Close" class="link-2" onclick="stopTrack()"></a>
      <div class="modal__details">
            <h1 class="modal__title"> Titre 2 </h1>
            <p class="modal__description">Séance 2</p>
            <div class="player">
              <audio src="meds/2_sens_se.mp3" class="audio"></audio>
                 <div class="buttons">
                   <div class="playpause-track" onclick="playpauseTrack()"><i class="fa fa-play-circle fa-5x"></i></div>
                 </div>
                 <div class="slider_container">
                   <div class="current-time">00:00</div>
                   <input type="range" min="1" max="100" value="0" class="seek_slider" onchange="seekTo()">
                   <div class="total-duration">00:00</div>
                 </div>
                 <div class="slider_container">
                   <i class="fa fa-volume-down"></i>
                   <input type="range" min="1" max="100" value="99" class="volume_slider" onchange="setVolume()">
                   <i class="fa fa-volume-up"></i>
                 </div>
       </div>
          </div>
          <a href="#close" title="Close" class=""> J'ai terminé cette séance.</a>
    </div>
 
    </div>
<!-- FIN SEANCE 2 -->

Le javascript :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
let player = document.createElement('audio');
let playpause_btn = document.querySelector(".playpause-track");
 
 
let seek_slider = document.querySelector(".seek_slider");
let volume_slider = document.querySelector(".volume_slider");
let curr_time = document.querySelector(".current-time");
let total_duration = document.querySelector(".total-duration");
 
let isPlaying = false;
let updateTimer;
 
function un() {
 
  clearInterval(updateTimer);
  resetValues();
 
  player.src = 'meds/1_souffle_se.mp3';
  player.load();
 
  updateTimer = setInterval(seekUpdate, 1000);
}
 
function deux() {
 
  clearInterval(updateTimer);
  resetValues();
 
  player.src = 'meds/2_sens_se.mp3';
  player.load();
 
  updateTimer = setInterval(seekUpdate, 1000);
 
}
 
//function init() {
//  clearInterval(updateTimer);
//  resetValues();
//  updateTimer = setInterval(seekUpdate, 1000);
//}
 
function resetValues() {
  curr_time.textContent = "00:00";
  total_duration.textContent = "00:00";
  seek_slider.value = 0;
}
 
 
function playpauseTrack() {
  if (!isPlaying) playTrack();
  else pauseTrack();
}
 
function playTrack() {
  player.play();
  isPlaying = true;
  playpause_btn.innerHTML = '<i class="fa fa-pause-circle fa-5x"></i>';
}
 
function pauseTrack() {
  player.pause();
  isPlaying = false;
  playpause_btn.innerHTML = '<i class="fa fa-play-circle fa-5x"></i>';;
}
 
function stopTrack() {
  player.pause();
  player.currentTime = 0;
  playpause_btn.innerHTML = '<i class="fa fa-play-circle fa-5x"></i>';;
}
 
 
 
 
function seekTo() {
  seekto = player.duration * (seek_slider.value / 100);
  player.currentTime = seekto;
}
 
function setVolume() {
  player.volume = volume_slider.value / 100;
}
 
function seekUpdate() {
  let seekPosition = 0;
 
  if (!isNaN(player.duration)) {
    seekPosition = player.currentTime * (100 / player.duration);
    seek_slider.value = seekPosition;
 
    let currentMinutes = Math.floor(player.currentTime / 60);
    let currentSeconds = Math.floor(player.currentTime - currentMinutes * 60);
    let durationMinutes = Math.floor(player.duration / 60);
    let durationSeconds = Math.floor(player.duration - durationMinutes * 60);
 
    if (currentSeconds < 10) { currentSeconds = "0" + currentSeconds; }
    if (durationSeconds < 10) { durationSeconds = "0" + durationSeconds; }
    if (currentMinutes < 10) { currentMinutes = "0" + currentMinutes; }
    if (durationMinutes < 10) { durationMinutes = "0" + durationMinutes; }
 
    curr_time.textContent = currentMinutes + ":" + currentSeconds;
    total_duration.textContent = durationMinutes + ":" + durationSeconds;
  }
}
Une idée du player :

Nom : Capture d’écran du 2022-06-03 17-34-49.png
Affichages : 124
Taille : 6,4 Ko


Merci d'avance...