Fix observer

This commit is contained in:
2024-05-07 18:50:17 +04:00
parent 6443f8fd0e
commit c961220474
+26 -37
View File
@@ -132,10 +132,7 @@ function startGame() {
score.innerHTML = "<p style='color: green; font-weight: bold; margin-right: 2em;'>Correct ✅ : <span style='color: black;' id='OK'>0</span></p><p style='color: red; font-weight: bold;'>Faux ❌ : <span style='color: black;' id='KO'>0</span></p>"
chrono.innerHTML = "<p>Temps écoulé : <span id='time'></span></p>"
const communeElement = document.getElementById('commune')
const timeElement = document.getElementById('time')
communeObserver(communeElement, timeElement)
communeObserver()
ok = document.getElementById('OK')
ko = document.getElementById('KO')
@@ -147,42 +144,30 @@ function startGame() {
}
/**
* Observe le contenu de l'élément ayant pour id "commune"
*
* @param {object} communeElement
* @param {object} timeElement
* Recommencer la partie
*/
function communeObserver(communeElement, timeElement) {
function restartGame() {
startGame()
}
/**
* Observe le contenu de l'élément ayant pour id "commune"
*/
function communeObserver(){
const communeElement = document.getElementById('commune')
const timeElement = document.getElementById('time')
// Options de l'observateur (quelles sont les mutations à observer)
const config = { childList: true, subtree: true, characterData: true }
// Fonction callback à éxécuter quand une mutation est observée
const callback = function (mutationsList) {
for (const mutation of mutationsList) {
for (var mutation of mutationsList) {
if (mutation.type == "childList" || mutation.type == "characterData") {
// Vérifie si le contenu de la balise span n'est pas égal à "..."
if (communeElement.textContent.trim() !== "...") {
updateTime(timeElement)
} else {
clearInterval(intervalId)
intervalId = null
}
}
}
}
// Crée une instance de l'observateur liée à la fonction de callback
const observer = new MutationObserver(callback)
// Commence à observer le noeud cible pour les mutations précédemment configurées
observer.observe(communeElement, config)
}
/**
* Mets à jour le contenu de l'élément ayant l'id "time"
*
* @param {object} timeElement
*/
function updateTime(timeElement) {
// Vérifie si setInterval n'est pas déjà en cours
if (!intervalId) {
intervalId = setInterval(() => {
gameTime++
@@ -195,12 +180,16 @@ function updateTime(timeElement) {
}
}, 1000)
}
}
}
}
}
/**
* Recommencer la partie
*/
function restartGame() {
startGame()
// Créé une instance de l'observateur lié à la fonction de callback
const observer = new MutationObserver(callback)
// Commence à observer le noeud cible pour les mutations précédemment configurées
observer.observe(communeElement, config)
}
/**