Copier dans le presse papier un texte contenant une var

Signaler
Messages postés
15
Date d'inscription
dimanche 16 mai 2004
Statut
Membre
Dernière intervention
2 mai 2012
-
Messages postés
15
Date d'inscription
dimanche 16 mai 2004
Statut
Membre
Dernière intervention
2 mai 2012
-
Bonjour,

J'utilise un script javascript Zeroclipboard pour copier dans mon presse papier du texte que j'ai rempli à l'avance.

Dans certain cas, je dois rentré une valeur.
Sois le texte est prédéfini, sois une variable doit être rentré par l'utilisateur afin d'ajuster le presse papier.

Dans mon exemple, j'ai 3 boutons,
Le premier copiera après le clique YES WE CAN
Le second lancera une popup ou on rentrera son prénom pour copier PRENOM CAN
Le troisième copiera après le clique YES YOU CAN

Malheureusement mes connaissance en JS me permette pas de faire la seconde action correctement.
Avec document.write, il me réécrit la page, et ne me copie rien du tout.
J'ai environs une 20aine de commande dont 75 % qui doivent contenir une variable définie par l'utilisateur avec un système de popup à compléter.

je me tourne vers vous pour m'aider à aboutir mon code et obtenir le résultat escompter.

Comme le copytoclipboard ne fonctionne pas sur mozilla, j'utilise Zeroclipboard qui utilise flash pour copier au clavier le contenu des div.


Voici le code de ma page :

<script type="text/javascript" src="ZeroClipboard.js"></script>
<script type="text/javascript">
function show_prompt()
{
var youcan=prompt("youcan","");
if (youcan!=null && youcan!="")
  {
    document.write(' can">');
// Pinger un NeuronID
var clip2 = new ZeroClipboard.Client();
clip2.setText( '' ); // will be set later on mouseDown
clip2.setHandCursor( true );
clip2.setCSSEffects( true );

clip2.addEventListener( 'mouseDown', function(client) { 
clip2.setText( document.getElementById('clip_youcan').value );
} );
clip2.glue( 'clip_youcan' );
  }
}
</script>
<!-- YES WE CAN -->


YES WE CAN

<!-- YOU CAN -->

YOU CAN

<!-- YES YOU CAN -->


YES YOU CAN

<script language="JavaScript">
// YESWECAN
var clip = new ZeroClipboard.Client();
clip.setText( '' ); // will be set later on mouseDown
clip.setHandCursor( true );
clip.setCSSEffects( true );

clip.addEventListener( 'mouseDown', function(client) { 
clip.setText( document.getElementById('clip_yeswecan').value );
} );
clip.glue( 'd_clip_yeswecan' );	
// YESYOUCAN
var clip3 = new ZeroClipboard.Client();
clip3.setText( '' ); // will be set later on mouseDown
clip3.setHandCursor( true );
clip3.setCSSEffects( true );

clip3.addEventListener( 'mouseDown', function(client) { 
clip3.setText( document.getElementById('clip_yesyoucan').value );
} );
clip3.glue( 'd_clip_yesyoucan' );
</script>


Merci d'avance pour votre soutiens :)

5 réponses

Messages postés
22
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
2 mars 2014

Bjr Kopax, je suis buté ici, j'ai lu sur un autre forum que tu avais déjà résolu ce pb. En fait je veux pouvoir copier dans le presse papier une variable qui existe déjà grâce à un bouton "COPIER".STP si t'as une solution pour firefox aide moi

Merci d'avance...
LE MEC LE PLUS INC
Messages postés
15
Date d'inscription
dimanche 16 mai 2004
Statut
Membre
Dernière intervention
2 mai 2012

Salut,

Oui j'ai résolu le soucis.
Il faut passé par flash qui lui pourrai utilisé le presse papier plutot que du code web.

J'utilise le plugin jquery zeroclipboard

http://www.steamdev.com/zclip/

Ça fonctionne très bien.
Messages postés
15
Date d'inscription
dimanche 16 mai 2004
Statut
Membre
Dernière intervention
2 mai 2012

J'oubliai, regarde l'exemple 2, qui explique comment ca se passe pour copier du texte dynamiquement.

Ensuite pour placé tes écouteurs d'evenement je te conseil d'utilisé l'écouteur "on" de jQuery 1.7 sur l'element parent.
Messages postés
22
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
2 mars 2014

Je ne pige pas tjrs. Tiens voilà mon code fourni à partir du tiens, ici je combine avec le php pour afficher le code javascript: s'il te plait modifie le pour mois

// On appel le JS Zeroclipboard
<script type="text/javascript" src="ZeroClipboard.js"></script>

// 1er bouton
<?php if(in_array($heure,$tab)){
if(($min>=45)&&($min<=59)){
echo"=45)&&($min<=59)){echo $ligne3;}}
echo"'/>
//ici je veux créer le bouton "copier"

Copier

<script language="JavaScript">
// On crée un nouveau clip
var clip = new ZeroClipboard.Client();
clip.setText( '' ); // will be set later on mouseDown
// On crée un événement pour que lors du clique, on copie le contenue du input si on clique
clip.addEventListener( 'mouseDown', function(client) {
clip.setText( document.getElementById('input_ping_allmodu').value );
} );
// Placer le flash au dessus de la div
clip.glue( 'div_ping_allmodu' );
</script>";
}
}elseif(in_array($heure,$table)){
if(($min>=0)&&($min<=40)){
echo"=0)&&($min<=40)){echo $ligne3;}}
echo"'/>

Copier

<script language="JavaScript">
// On crée un nouveau clip
var clip = new ZeroClipboard.Client();
clip.setText( '' ); // will be set later on mouseDown
// On crée un événement pour que lors du clique, on copie le contenue du input si on clique
clip.addEventListener( 'mouseDown', function(client) {
clip.setText( document.getElementById('input_ping_allmodu').value );
} );
// Placer le flash au dessus de la div
clip.glue( 'div_ping_allmodu' );
</script>";
}
}
?>



LE MEC LE PLUS INC
Messages postés
15
Date d'inscription
dimanche 16 mai 2004
Statut
Membre
Dernière intervention
2 mai 2012

Il n'y a pas de couleur dans ton code :/

Sinon :
Tu appel ce fichier :
<script type="text/javascript" src="ZeroClipboard.js"></script>

APRES avoir importer jQuery (très important)

Un ID est unique, vaut mieux crée une class.

Ton code n'est pas bon, il faut un bouton, et une zone de texte cible.


    $(document).ready(function(){

    $('a#bouton').zclip({
    path:'js/ZeroClipboard.swf',
    copy:function(){return $('input#dynamic').val();}
    });

    });


Ceci accrochera un clip flash au lien d'id bouton.
et renverra le contenu de l'input d'id dynamic.

maintenant si ces boutons sont crée de maniere dynamique, je te conseil de faire comme ceci:

$(document).ready(function(){

$('#wrapper').on('mouseover','a.bouton',function(){
  
  $(this).zclip({
path:'js/ZeroClipBoard.swf',
copy:function(){return $(this).next('input').val();}
  
  });

});

});



ici j'utilise le bouton de class .bouton qui copie la valeur du input qui suit.
J'utilise le mouseover pour placer le clip car j'utilise des slideUp de jquery qui place au chargement de la page les boutons de manière anecdotique.

Si ton contenu ne bouge pas dans ta page tu peux directement poser un zclip sur l'element this.