> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Kameleoon.API.Utils

> Référence des méthodes utilitaires Kameleoon.API.Utils pour les écouteurs, les minuteurs, le hachage, les paramètres d'URL et les requêtes HTTP.

Ce module fournit des méthodes utilitaires pour les opérations courantes.

## addEventListener

La méthode `addEventListener()` attache un gestionnaire d'événement à l'élément spécifié.

```javascript theme={null}
var popin = document.createElement("div");
popin.id = "kameleoonPopin";
popin.innerHTML = "<img src='https://www.mywebsite.com/myImage.jpg'/>";
document.body.appendChild(popin);

Kameleoon.API.Utils.addEventListener(popin, "mousedown", function (event) {
  document.body.removeChild(popin);
});
```

> [!NOTE]
>
> Kameleoon réinitialise tous les écouteurs d'événements créés via cette API lors des rechargements du moteur. Utilisez cette méthode pour ajouter des écouteurs dans les SPA pour assurer le nettoyage approprié.

**Arguments**

| Name | Type | Description |
| - | - | - |
| element | Object | Élément cible pour l'écouteur. Ce champ est obligatoire. |
| eventType | String | Nom de l'événement. Ce champ est obligatoire. |
| callback | Function | Fonction à exécuter lorsque l'événement se déclenche. Ce champ est obligatoire. |

## addUniversalClickListener

La méthode `addUniversalClickListener()` attache un gestionnaire de clic qui écoute les clics de souris sur ordinateur de bureau et les événements tactiles sur les appareils mobiles et les tablettes. Pour les appareils mobiles, un événement tactile se produit si le moteur détecte un événement `touchstart` suivi d'un événement `touchend` sans un événement `touchmove` intermédiaire.

```javascript theme={null}
let btn = document.querySelector("#MyButton");

Kameleoon.API.Utils.addUniversalClickListener(btn, function (event) {
  let goalID = 1234;
  Kameleoon.API.Goals.processConversion(goalID);
});
```

> [!NOTE]
>
> Kameleoon réinitialise tous les écouteurs créés via cette API lors des rechargements du moteur, facilitant le nettoyage dans les SPA.

> [!NOTE]
>
> On desktop devices, right-clicks trigger this method (par exemple, lors de l’ouverture d’un lien dans un nouvel onglet).

**Arguments**

| Name | Type | Description |
| - | - | - |
| element | Object | Élément cible pour l'écouteur. Ce champ est obligatoire. |
| callback | Function | Fonction à exécuter lorsque l'événement de clic se déclenche. Ce champ est obligatoire. |

## clearInterval

La méthode `clearInterval()` efface un minuteur que vous avez défini via `setInterval()`.

```javascript theme={null}
var myInterval = Kameleoon.API.Utils.setInterval(function () {
  if (window.dataLayer != null) {
    Kameleoon.API.Utils.clearInterval(myInterval);
  }
}, 1000);
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| intervalId | Number | ID du minuteur renvoyé par la méthode `setInterval()`. Ce champ est obligatoire. |

## clearTimeout

La méthode `clearTimeout()` efface un minuteur que vous avez défini via `setTimeout()`.

```javascript theme={null}
var myTimeout = Kameleoon.API.Utils.setTimeout(function () {
  var popin = document.createElement("div");
  popin.id = "kameleoonPopin";
  popin.innerHTML = "<img src='https://www.mywebsite.com/myImage.jpg'/>";
  document.body.appendChild(popin);
}, 5000);

Kameleoon.API.Utils.addEventListener(document.body, "mousedown", function () {
  Kameleoon.API.Utils.clearTimeout(myTimeout);
});
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| timeoutId | Number | ID du minuteur renvoyé par `setTimeout()`. |

## computeHash

La méthode `computeHash()` calcule un hachage à partir d'une chaîne. Utilisez-le pour traiter les données uniques sans manipuler directement les informations personnelles sensibles.

```javascript theme={null}
var emailId = Kameleoon.API.Utils.createHash("myemail@mail.com");
Kameleoon.API.Data.setCustomData("VisitorEmail", emailId);
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| string | String | La chaîne source à partir de laquelle calculer le hachage. |

**Valeur de retour**

| Name | Type | Description |
| - | - | - |
| hash | String | Hachage résultant. L'algorithme utilisé est le même que [l'implémentation de `hashCode()` pour java.lang.String](https://www.w3schools.com/java/ref_string_hashcode.asp). |

## getURLParameters

La méthode `getURLParameters()` analyse l'URL actuelle et retourne tous les paramètres détectés. Cette méthode supporte à la fois les paramètres de recherche (?) et de hash (#).

```javascript theme={null}
var parameters = Kameleoon.API.Utils.getURLParameters();

if (parameters.productID != null) {
  Kameleoon.API.Events.trigger("ProductPage");
}
```

**Valeur de retour**

| Name | Type | Description |
| - | - | - |
| parameters | Object | Objet avec les noms de paramètres comme clés et les valeurs des paramètres comme valeurs. |

## performRequest

La méthode `performRequest()` initie un appel à un serveur Web distant.

```javascript theme={null}
Kameleoon.API.Utils.performRequest(
  "https://www.my_web_server_url.com",
  function () {
    if (this.readyState == 4 && this.status == 200) {
      eval(this.responseText);
    }
  },
  function() {
    console.log("Request cancelled");
  },
  2000
);
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| url | String | L'URL du serveur distant. Ce champ est obligatoire. |
| readyStateHandler | Function | Fonction de rappel que la méthode exécute lorsque le serveur envoie une réponse. La méthode transmet l'argument event à cette fonction ([événement load](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/load_event)) et lie l'objet XMLHttpRequest sous-jacent à la fonction de rappel. Toutes les [propriétés de XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#Properties) sont donc disponibles dans la fonction de rappel via **this**. Ce champ est facultatif. |
| errorHandler | Function | Fonction de rappel que la méthode exécute lorsqu'une erreur survient. La méthode transmet l'argument event à cette fonction ([événement error](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget/onerror) ou [événement timeout](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/timeout)) et lie l'objet XMLHttpRequest sous-jacent à la fonction de rappel. Toutes les [propriétés de XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#Properties) sont donc disponibles dans la fonction de rappel via **this**. Ce champ est facultatif. |
| timeout | Number | Délai en millisecondes avant l'annulation de la demande. Par défaut 5000 millisecondes. |

## querySelectorAll

La méthode `querySelectorAll()` retourne tous les éléments du document correspondant aux sélecteurs CSS spécifiés sous forme d'objet `NodeList` statique.

```javascript theme={null}
var foundElements = Kameleoon.API.Utils.querySelectorAll(".kameleoonClassName");

foundElements.forEach(function (element) {
  element.style.display = "none";
});
```

> [!NOTE]
>
> Cette méthode supporte les sélecteurs avec **:contains** et **:eq**.

**Arguments**

| Name | Type | Description |
| - | - | - |
| selector | String | Un ou plusieurs sélecteurs CSS. Ce champ est obligatoire. |

**Valeur de retour**

| Name | Type | Description |
| - | - | - |
| elements | Array | Liste des éléments correspondant à la requête. |

## setInterval

La méthode `setInterval()` exécute une fonction ou une expression à l'intervalle spécifié en millisecondes.

Kameleoon réinitialise tous les intervalles créés via cette API lors des rechargements du moteur. Utilisez cette méthode dans les SPA pour assurer le nettoyage approprié.

```javascript theme={null}
var countdown = 10;
var timer = document.createElement("div");
timer.innerHTML = countdown.toString();
document.body.appendChild(timer);

var myInterval = Kameleoon.API.Utils.setInterval(function () {
  countdown--;
  timer.innerHTML = countdown.toString();

  if (countdown == 0) {
    Kameleoon.API.Utils.clearInterval(myInterval);
  }
}, 1000);
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| function | Function | Fonction JavaScript que la méthode exécute périodiquement. Ce champ est obligatoire. |
| milliseconds | Number | Durée de l’intervalle en millisecondes. La valeur par défaut est de 200 millisecondes. |

**Valeur de retour**

| Name | Type | Description |
| - | - | - |
| intervalId | Number | ID du minuteur à utiliser avec `clearInterval()`. |

## setTimeout

La méthode `setTimeout()` exécute une fonction ou une expression après le nombre de millisecondes spécifié.

Kameleoon réinitialise tous les délais d'attente créés via cette API lors des rechargements du moteur. Utilisez cette méthode dans les SPA pour assurer le nettoyage approprié.

```javascript theme={null}
var myTimeout = Kameleoon.API.Utils.setTimeout(function () {
  Kameleoon.API.Events.Trigger("5 seconds elapsed");
}, 5000);
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| function | Function | Fonction JavaScript que la méthode exécute périodiquement. Ce champ est obligatoire. |
| milliseconds | Number | Délai en millisecondes avant l'exécution de la fonction. Par défaut 200 millisecondes. |

**Valeur de retour**

| Name | Type | Description |
| - | - | - |
| timeoutId | Number | ID du minuteur à utiliser avec `clearTimeout()`. |
