Есть php, он при определённых событиях выводит button.
printf('<button onclick="setclipboard()">Copy text</button>');
При нажатии на которую по идее должна срабатывать функция setclipboard().
А вот и она:
<script>
function setclipboard(){
navigator.clipboard.writeText("someText").then(function() {
//1
}, function() {
//2
});
}
</script>
Я пытаюсь сделать так, чтобы при нажатии на кнопку копировался текст "someText".
Но оно не работает. Почему? Что я делаю не так?
Функция setclipboard видимо "не видна" из контекста вызова.
Попробуй так:
window.setclipboard = function () {
navigator.clipboard.writeText("someText").then(function () {
//1
}, function () {
//2
});
};
Для примера (Есть, к примеру, поле ввода, или любое другое поле):
<?php
$bz = "1"; // К примеру, есть переменная.
?>
<div>Отсюда копируем текст</div>
<input id="textForCopy">
<?php
if ($bz == "1"){ // Выполняем проверку. Если переменная = 1, то показываем кнопку, которая копирует текст в буффер обмена.
printf('<button onclick="setclipboard()">Copy text</button>');
}
?>
<div>Сюда вставляем текст из буффера</div>
<input>
<script language="JavaScript">
function setclipboard(){
let text = document.getElementById('textForCopy').value; // получаем введённый в поле текст
navigator.clipboard.writeText(text).then(function() { // Копируем текст в буффер обмена
//1
}, function() {
//2
});
}
</script>
Как это работает, когда есть кнопка:
function setclipboard(){
let text = document.getElementById('textForCopy').value;
navigator.clipboard.writeText(text).then(function() {
//1
}, function() {
//2
});
}
<div>Отсюда копируем текст</div>
<input id="textForCopy">
<button onclick="setclipboard()">Copy text</button>
<div>Сюда вставляем текст из буффера (Ctrl + v)</div>
<input>
Ответ нашелся. Дело в том что на хостинге где проводились тесты был http протокол. Судя по документации, для работы clipboard необходимо чтобы соединение было доверенным.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости