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 :

Saut de ligne lors de la copie


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    recherche d'emploi
    Inscrit en
    Avril 2022
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : recherche d'emploi

    Informations forums :
    Inscription : Avril 2022
    Messages : 88
    Points : 48
    Points
    48
    Par défaut Saut de ligne lors de la copie
    Je passe par un bouton copier en JavaScript.
    Ce code est le seul qui fonctionne sur le serveur client.
    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
     <!-- Le formulaire condition ELSEIF-->
         <form id="form-copier" >
            <!-- champ de saisie de texte -->
            <textarea class="js-text" id="texte"  cols="80" rows="5"disabled="disabled"><?php echo $_SESSION["Balises2"]?> </textarea>
    		<br /><br />
            <!-- Bouton copier -->
            <input type="button" class="js-copytextbtn" value="Copier les balises"/>
        </form>
     
            <script>
                (() => {
                    const button = document.querySelector('.js-copytextbtn');
     
                    button.addEventListener('click', () => {
                        const text = document.querySelector('.js-text');
                        const range = document.createRange();
     
                        range.selectNode(text);
                        window.getSelection().addRange(range);
     
                        try {
                            if (document.execCommand('copy')) {
                                // alert('Le texte a été copié !');
                                document.location.replace('pagefin.php');
                            }    
                        } catch (err) {
                            alert('Pas possible de copier.');
                        }
                        
                        window.getSelection().removeAllRanges();
                    });
                })();
            </script>
    Le seul petit soucis, c'est que le texte copié contient un saut de ligne en début du texte et en fin de texte.

    [ADC_START][SDP][ANNULE][00000000][bdceeb19][11/05/22 10:04][Version_2.02][ADC_END]

    Merci

  2. #2
    Membre averti Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte passionné
    Inscrit en
    Novembre 2002
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte passionné

    Informations forums :
    Inscription : Novembre 2002
    Messages : 193
    Points : 356
    Points
    356
    Par défaut
    Bonjour à tous,

    Citation Envoyé par wisefun77 Voir le message
    Le seul petit soucis, c'est que le texte copié contient un saut de ligne en début du texte et en fin de texte.
    Merci
    Et avec une expression régulière pour supprimer les sauts de ligne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text.value.replace( /[\r\n]+/gm, "" );

  3. #3
    Membre du Club
    Homme Profil pro
    recherche d'emploi
    Inscrit en
    Avril 2022
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : recherche d'emploi

    Informations forums :
    Inscription : Avril 2022
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Bonjour ASCIIDEFOND,
    Ma ligne de code ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                        const text = text1.value.replace( /[\r\n]+/gm, "" );
    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
     <script>
                (() => {
                    const button = document.querySelector('.js-copytextbtn');
     
                    button.addEventListener('click', () => {
                        const text1 = document.querySelector('.js-text');
                        const range = document.createRange();
                        const text = text1.value.replace( /[\r\n]+/gm, "" );
                        range.selectNode(text);
                        window.getSelection().addRange(range);
     
                        try {
                            if (document.execCommand('copy')) {
                                // alert('Le texte a été copié !');
                                document.location.replace('pagefin.php');
                            }    
                        } catch (err) {
                            alert('Pas possible de copier.');
                        }
                        
                        window.getSelection().removeAllRanges();
                    });
                })();
            </script>

    Merci.

  4. #4
    Membre averti Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte passionné
    Inscrit en
    Novembre 2002
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte passionné

    Informations forums :
    Inscription : Novembre 2002
    Messages : 193
    Points : 356
    Points
    356
    Par défaut
    Salut wisefun77,

    Ma ligne de code ne fonctionne pas
    Essaie avec ça:
    Code JavaScript : 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
     
            (() => {
                const button = document.querySelector('.js-copytextbtn');
     
                button.addEventListener('click', () => {
                    const text1 = document.querySelector('.js-text');
                    const range = document.createRange();          
                    range.selectNode(text1);
                    window.getSelection().addRange(range);
     
                    try {
                        if (document.execCommand('copy')) {
                            let text = text1.value.replace(/[\r\n]+/gm, "");
                             alert('Le texte a été copié ! '+  text);
                            document.location.replace('pagefin.php');
                        }
                    } catch (err) {
                        alert('Pas possible de copier.');
                    }
     
                    window.getSelection().removeAllRanges();
                });
            })();

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 933
    Points : 44 084
    Points
    44 084
    Par défaut
    Bonjour,
    Le seul petit soucis, c'est que le texte copié contient un saut de ligne en début du texte et en fin de texte.
    ces « carriage return » n’appartiennent pas à ton texte mais sont issus de la façon qu'ont les navigateurs de gérer les Range.

    Si tu ne veux pas l'avoir il te faudrait écrire le HTML suivant :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <form id="form-copier"><textarea class="js-text" id="texte"...>
    pour que l'élément <texarea> soir le firstChild de <form> et également le lastChild.

    Pour les <texarea> et les <input> il est faudrait plutôt faire :
    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
    button.addEventListener("click", () => {
      const elemText = document.getElementById("texte");
      // supprimer l'attribut disabled si existe
      const disabled = elemText.getAttribute("disabled");
      elemText.removeAttribute("disabled");
      // selectionne le contenu
      elemText.focus();
      elemText.select();
      // copy
      document.execCommand("copy");
      // réactive l'attribut disabled si existe
      disabled && elemText.setAttribute("disabled", disabled);
      // remise focus sur Btn
      button.focus();
    });

  6. #6
    Membre du Club
    Homme Profil pro
    recherche d'emploi
    Inscrit en
    Avril 2022
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : recherche d'emploi

    Informations forums :
    Inscription : Avril 2022
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Bonjour ASCIIDEFOND,

    Merci pour ton aide, mais cela ne fonctionne pas.
    Merci beaucoup.

    Bonjour NoSmoking,

    Merci beaucoup pour ton aide, ton cours, tes infos.
    J'ai essayé sans faire de copier coller, pour apprendre le code et le comprendre.
    Tout est génial, cela fonctionne.

    Merci très sincèrement à tous pour votre patience et aide.

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

Discussions similaires

  1. [XL-2007] Saut de ligne lors de lecture fichier .txt
    Par Loupire dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/01/2010, 10h02
  2. [notepad++] Perte des sauts de ligne lors des copier/coller
    Par L'aigle de Carthage dans le forum Windows Vista
    Réponses: 4
    Dernier message: 26/12/2009, 20h56
  3. [XSLT] Supprimer saut de ligne dans un xsl:copy
    Par chris1024fr dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 29/09/2009, 18h34
  4. Sortable List : Eviter les sauts de ligne lors des débordements
    Par angel 2004 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 28/01/2008, 12h20
  5. Problème de sauts de lignes lors d'un export Excel
    Par guidav dans le forum Langage
    Réponses: 1
    Dernier message: 14/06/2006, 15h58

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