2010-10-16 34 views
2

Avant toute demande, j'ai fait des recherches ceci complètement et la réponse n'a pas été postée ici auparavant.Coller les nouvelles lignes dans le presse-papiers par l'intermédiaire de Javascript

Je souhaite envoyer du texte de configuration en texte brut au presse-papiers avec JavaScript. Le texte consistera en plusieurs commandes, une commande par ligne, afin que l'utilisateur puisse ensuite passer dans un fichier de configuration sur son PC (appelez-le "myconfig.ini") en utilisant un éditeur de texte (le plus souvent Notepad.exe).

J'ai essayé les éléments suivants:

var cCRLF = String.fromCharCode(10,13); 

var cText = 'This is command line 1'+cCRLF; 
cText += 'This is command line 2'+cCRLF; 
cText += 'This is command line 3'+cCRLF; 
cText += 'This is command line 4'; 

window.clipboardData.setData('Text', cText); 

mais quand j'exécuter et coller dans le bloc-notes,
je ne reçois pas des lignes individuelles et
le caractère de retour à la ligne (cCRLF) n'est pas visible
(ce vilain petit le caractère de la boîte apparaît).

Est-ce que quelqu'un a une solution pour cela?

Répondre

0

Je pense avoir trouvé une solution. C'est un peu bizarre, mais bon, c'est pour IE. C'est un extrait modifié que j'ai trouvé sur stackoverflow.

<body> 
    <a href="#" onclick='test("This\nIS\nA\nTEST")'>TEST</a> 
    <div id="cb" style="position: absolute; left: -2000px"></div> 
</body> 
<script> 

function test(cText) { 
    cText= cText.replace(/\n\r?/g, "<br>"); 

    // create an editable DIV and append the HTML content you want copied 
    var editableDiv = document.getElementById("cb"); 
    with (editableDiv) { 
     contentEditable = true; 
    }  
    editableDiv.innerHTML= cText;   

    // select the editable content and copy it to the clipboard 
    var r = document.body.createTextRange(); 
    r.moveToElementText(editableDiv); 
    r.select(); 
    r.execCommand("Copy"); 

    // deselect, so the browser doesn't leave the element visibly selected 
    r.moveToElementText(document.body); 
    r.select(); 
} 

</script> 
0

Je suggère d'utiliser une autre méthode que le presse-papiers pour envoyer des données à l'utilisateur. Cette méthode ne fonctionne que dans IE et peut être désactivée (et les versions les plus récentes de l'invite IE): Get clipboard data as array in javascript

Une boîte contextuelle CSS (que l'utilisateur peut copier d'elle-même) serait probablement une solution plus agréable (et multi-plateforme). Cela pourrait aider: http://www.pat-burt.com/web-development/how-to-do-a-css-popup-without-opening-a-new-window/

+0

OK, merci à tous. Je pense que je vais aller la route popup CSS. Je suis d'accord, une solution plus propre. – user478094

+0

user478094, que diriez-vous de choisir une réponse afin que votre question soit marquée comme résolue? Thx – kanaka