Я хочу добавить на существующую веб-страницу кнопку, которая будет копировать текст в буфер обмена Windows.
Веб-страница и PHP в ней уже хорошо работают для создания и отображения текста следующим образом:
Вывод на веб-странице:
'Abby Normal' <abnormal@rockyhorror.com>, 'Brad Majors' <bm@rockyhorror.com>, 'Frank N. Furter' <franknfurter@rockyhorror.com>
Итак, теперь я хочу добавить функцию Javascript и кнопку html, которая вызывает эту функцию, чтобы скопировать этот вывод в буфер обмена Windows.
Проблема: при нажатии кнопки ничего не копируется.Что я делаю неправильно?Заранее спасибо.
<?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>
Я пробовал способ, предложенный в руководстве по Javascript:
var copyText = = document.getElementById("theList");
И мои собственные варианты с использованием PHP в Javascript:
var copyText = <?PHP echo($emails); ?>;
var copyText = `<?PHP echo($emails); ?>`;
var copyText = "<?PHP echo($emails); ?>";
var copyText = '<?PHP echo($emails); ?>';
Но в результате ничего не вызывает никаких ошибок и ничего не копируется в буфер обмена.
Я знаю, что веб-страница немедленно сохраняется и используется, потому что я также делаю тривиальное изменение букв «Нажмите здесь»в кнопке и можете увидеть разницу после обновления. enter code here
*** ОБНОВЛЕНИЕ С ИСПОЛЬЗОВАННЫМ ОТВЕТОМ: ****
<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>