Je veux inclure un bouton sur une page Web existante qui copiera le texte dans le presse-papiers de Windows.
La page Web et le PHP qu'elle contient fonctionnent déjà bien pour créer et afficher un texte comme celui-ci :
Sortie sur la page web :
'Abby Normal' <abnormal@rockyhorror.com>, 'Brad Majors' <bm@rockyhorror.com>, 'Frank N. Furter' <franknfurter@rockyhorror.com>
Je veux maintenant ajouter une fonction Javascript et un bouton html qui appelle cette fonction pour copier cette sortie dans le presse-papiers de Windows.
Problème : rien n'est copié lorsque l'on appuie sur le bouton. Qu'est-ce que je fais de mal ? Merci d'avance.
<?PHP
session_start();
include('include/_initsess.php');
include('include/_setdb.php');
if(!isset($_SESSION['userlist'])) exit;
$users = $_SESSION['userlist'];
$emails = '';
$qry = "SELECT FIRST,LAST,EMAIL FROM users WHERE PKEY IN ($users)";
$result = mysql_query($qry);
$numrows = mysql_num_rows($result);
for ($m=0; $m<$numrows; $m++) {
$row = mysql_fetch_array($result);
list($fn,$ln,$em) = $row;
$emails .= ($m==0) ? "'".$fn." ".$ln."' <".$em.">" : (", '".$fn." ".$ln."' <".$em.">");
} // end for
?>
<html>
<head>
</head>
<body>
<span class=mono id="theList" value="<?php echo $emails; ?>">
<?PHP echo($emails); ?>
</span>
<script>
function copyToClipboardWithJavascript() {
/* Get the text field */
var copyText = document.getElementById("theList");
/* Select the text field */
copyText.select();
/* Copy the text inside the text field */
document.execCommand("copy");
}
</script>
<button onclick="copyToClipboardWithJavascript()">Click here</button>
</span>
</body>
</html>
J'ai essayé la méthode suggérée par un tutoriel Javascript :
var copyText = = document.getElementById("theList");
Et mes propres variations en utilisant PHP dans Javascript :
var copyText = <?PHP echo($emails); ?>;
var copyText = `<?PHP echo($emails); ?>`;
var copyText = "<?PHP echo($emails); ?>";
var copyText = '<?PHP echo($emails); ?>';
Mais le résultat est que rien ne provoque d'erreur et rien n'est copié dans le presse-papiers.
Je sais que la page Web est immédiatement sauvegardée et utilisée, car j'ai également apporté une modification triviale aux lettres "Click here" dans le bouton et je peux voir la différence après le rafraîchissement. enter code here
***MISE À JOUR AVEC LA RÉPONSE QUE J'AI UTILISÉE : ****
<span class=mono id="theList">
<?PHP echo($emails); ?>
</span>
<button id="copyButton" onclick="myCopyFunction()">Copy email address list to clipboard.</button>
<script>
function myCopyFunction() {
var myText = document.createElement("textarea")
myText.value = document.getElementById("theList").innerHTML;
myText.value = myText.value.replace(/</g,"<");
myText.value = myText.value.replace(/>/g,">");
document.body.appendChild(myText)
myText.focus();
myText.select();
document.execCommand('copy');
document.body.removeChild(myText);
}
</script>