Problème d'affichage d'espace en HTML

Bonsoir à toutes et à tous,

En réponse à un appui sur un bouton, je souhaite afficher des données dans ma page HTML. Mais je voudrais inclure des espaces dans le texte transmis. Je n'y arrive pas. Voilà le contenu de la réponse à la requête :

  server.on("/statut", HTTP_GET, [](AsyncWebServerRequest *request) { // Envoi des statuts courants
    request->send(200, "text/html", statut0 + "<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b>"+" . . . Signal WiFi : "+ forceWiFi + " dBm"); 
  });

J'ai vu que si on employait les termes "text/html", on retournait bien du texte HTML où &nbsp; représente un espace insécable.

Pour autant, dans ma page, au lieu d'avoir des espaces, ce sont les termes &nbsp; qui sont affichés (même résultat avec ou sans la balise b).

Où est-ce que je me plante ?

Cordialement.

Pierre.

tu as l'ancienne méthode de tag PRE.
Sinon tu peux ajouter dans le style CSS white-space: pre; je crois, mais je n'ai jamais testé

Par contre c'est bizarre que le &nbsp, ne soit pas interprété.
Pourquoi tu ne renvois pas un HTML valide comme ce qui suit?

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>

5<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b> . . . Signal WiFi : 5 dBm

</body>
</html>

Si j'écris ce que tu dis, j'ai bien comme résultat : 5 . . . Signal WiFi : 5 dBm à l'écran.

Maintenant, si je passe ce texte par :

    request->send(200, "text/html", "5<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b> . . . Signal WiFi : 5 dBm"); 

J'obtiens à lécran : 5<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b> . . . Signal WiFi : 5 dBm

Cordialement.

Pierre.

Oui, c'est plutôt cohérent non ?
  étant un mot clé HTML, si tu n'est pas dans une page HTML, celui-ci n'a pas de sens particulier.

Je ne comprends pas trop le sens de ton message.
Je suppose que tu veux dire que pour toi ton texte est un HTML valide ?

Si c'est bien ça, non le content-type ne suffit pas, il faut aussi que tu respecte les spécification HTML
Dans les régles HTML
Le code que je t'ai donné est la structure minimal que doit contenir un code HTML.
Ton texte seul, ne contient pas la structure HTML necessaire.

Je ne sais pas si je suis claire ou que je n'ai pas compris ton soucis ?

J'avais posé la question sur le site "Perplexity" et la réponse était que l'attribut "text/html" permettait de retourner un message au format HTML.

Ce n'est apparemment pas le cas pour ce qui m'intéresse.

J'ai résolu le problème en plaçant le formatage dans la partie HTML et en ne retournant dans la requête que le contenu de variable.

Partie HTML :

          <p>Date et Heure : <span id="DetH">..</span>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
             Statut de fonctionnement : <span id="Sta0">..</span>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
             Signal WiFi : <span id="Sta1">..</span> dBm</p>

Partie script :

             fetch('/statut') // Affichage des statuts de fonctionnement
              .then(response => response.text())
              .then(data => {
                const [sta0, sta1] = data.split(',');
                document.getElementById('Sta0').textContent = sta0;
                document.getElementById('Sta1').textContent = sta1;
              });

Partie requête :

  server.on("/statut", HTTP_GET, [](AsyncWebServerRequest *request) { // Envoi des statuts courants
    request->send(200, "text/html", statut0 + "," + forceWiFi); 
  });

Cordialement.

Pierre.

bonjour
s'il faut "caler" quelque chose dans une page en plaçant des espaces c'est peut être qu'on n'a pas suffisamment réfléchi a la position des divers blocs d'affichage ... en css peut être ?
voir le padding ...

Alors je n'ai surement pas compris ce que tu veux faire.
Si, c'est bien le cas, lorsque tu spécifie le content type text/html, le navigateur va utiliser son interpréteur HTML.
Mais a priori, tu ne veux pas renvoyer une page HTML entière valide, donc l'interpréteur ne peut pas afficher la page comme tu t'attends.
Si en fait c'est un affichage évolutif que d'une partie de la page, il faut alors effectivement faire un remplacement de cette partie.
Dans ce cas, par soucis de cohérence, on utilise aussi le content-type text/html, mais cela n'aura pas les mêmes implications.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.