IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

alerte unsafe-eval pour txt.substring


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 731
    Par défaut alerte unsafe-eval pour txt.substring
    Bonjour,

    J'ai trouvé ce petit script pour compter les caractères dans un textarea et limiter la longueur du texte saisi.

    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
    window.onload = function() {
      setTimeout('timer()', 100);
    };
     
    function compter(f) {
      var max = 1200;
      var txt = f.com.value;
      var nb = txt.length;
      if (nb > max) {
        alert("Pas plus de " + max + " caractères dans ce champ");
        f.com.value = txt.substring(0, max);
        nb = max;
      }
      f.nbcar.value = nb;
    }
     
    function timer() {
      compter(document.forms[0]);
      setTimeout("timer()", 100);
    }

    Cela semble provoquer une alerte unsafe-eval par le CSP (Content Security Policy)/

    Où voyez-vous la faille de sécurité ?

    Merci d'avance.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    assurément tu n'as pas trouvé ce qui se fait de plus simple et de moins gourmand.

    Avec comme HTML :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <textarea id="commentaire" name="commentaire" value=""></textarea>
    une fois le DOM chargé, il te suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    const domElement = document.getElementById("saisie");
    const maxCar = 1200;
    domElement.addEventListener("keydown", function(e) {
      console.log(this.value.length);
      if (this.value.length > maxCar) {
        // ton code
      }
    });
    et encore plus simple sans JavaScript :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <textarea id="commentaire" name="commentaire" value="" maxlength="1200"></textarea>

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Bonjour,

    Ton double setTimeout est également très gênant pour le fonctionnement de la page...

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Et si tu veux du temps réel même en cas de copier / couper / coller...

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div id="count"></div>
    <textarea id="t" rows="10" cols="100" maxlength="1200"></textarea>

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("t").addEventListener("input",(e)=> document.getElementById("count").textContent=e.target.value.length)

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 731
    Par défaut
    Bonjour NoSmoking et javatwister,

    Merci de votre suivi, je vais faire les tests pendant le week-end.

    Je vais commencer par le code de javatwister qui me semble le plus simple.

    A voir le comportement du navigateur avec simplement maxlength="1200" quand tu dépasses les 1200 caractères.
    Cela bloque la saisie, mais avec ou sans alerte (à mon avis sans) ?
    C'est quand même plus sympa d'avoir une alerte, d'où le code de NoSmoking.

    Je vous tiens informé.

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Bah, si t'as une alerte qui te casse ta page, ce sera moche...

    Tu peux ajouter cette condition:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    const t=document.getElementById("t"),
    count=document.getElementById("count");
     
    t.addEventListener("input",(e)=> 
    	e.target.value.length<e.target.maxLength ? 
    	count.textContent=e.target.value.length:
    	count.textContent="Limite atteinte!!!"
    )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 28/04/2009, 14h04
  2. utilisation d'eval pour une fonction générique
    Par DrDam dans le forum Langage
    Réponses: 5
    Dernier message: 17/09/2008, 12h22
  3. Alert du javascript pour un boutton coté serveur (c#)
    Par tina25 dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 03/12/2007, 16h52
  4. Réponses: 2
    Dernier message: 03/10/2006, 21h20
  5. pb eval pour le code php dans une feuille xslt
    Par nipepsi dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 10/09/2004, 11h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo