Есть 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 необходимо чтобы соединение было доверенным.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники