Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> insert from clipboard 
:(
    Опции темы
YahоО
Дата 14.2.2021, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 11.6.2015

Репутация: 1
Всего: 1



Как в javascript получить в переменную то, что есть в буфере обмена?
Например, скопировали в Clipboard:  document.execCommand('copy'), и что дальше, 
ведь это пол-дела, вторая половина это надо что то сделать с тем что скопировано, но как к нему добраться?

PM MAIL   Вверх
ksnk
Дата 14.2.2021, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Вопрос очень сложный. Иногда - можно
Код

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <input type="text" class="to-copy" placeholder="Type something..." aria-label="Type something">
    <button class="write-btn">Copy to clipboard</button>
</div>

<div>
    <h3 class="clipboard-results"></h3>
    <button class="read-btn">Paste from clipboard</button>
</div>
<script>
    const readBtn = document.querySelector('.read-btn');
    const writeBtn = document.querySelector('.write-btn');

    const resultsEl = document.querySelector('.clipboard-results');
    const inputEl = document.querySelector('.to-copy');

    readBtn.addEventListener('click', () => {
        navigator.clipboard.readText()
            .then(text => {
                resultsEl.innerText = text;
            })
            .catch(err => {
                console.log('Something went wrong', err);
            })
    });

    writeBtn.addEventListener('click', () => {
        const inputValue = inputEl.value.trim();
        if (inputValue) {
            navigator.clipboard.writeText(inputValue)
                .then(() => {
                    inputEl.value = '';
                    if (writeBtn.innerText !== 'Copied!') {
                        const originalText = writeBtn.innerText;
                        writeBtn.innerText = 'Copied!';
                        setTimeout(() => {
                            writeBtn.innerText = originalText;
                        }, 1500);
                    }
                })
                .catch(err => {
                    console.log('Something went wrong', err);
                })
        }
    });
</script>
</body>
</html>

Цитата

Надо отметить, что сейчас новое API доступно только в Chrome 66+ и поддерживает лишь копирование и вставку обычного текста. Кроме того, работает оно только тогда, когда страница загружена по HTTPS или с localhost, и только в тех случаях, когда страница открыта в текущей активной вкладке браузера.

Отсюда

Это сообщение отредактировал(а) ksnk - 14.2.2021, 19:05


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
YahоО
Дата 14.2.2021, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 11.6.2015

Репутация: 1
Всего: 1



ksnk, благодарю Вас, 
но этот код сегодня тоже рассматривал, и он требует какие то дополнительные действия (запрашивает разрешение на просмотр текста),
и кроме того возможна еще и блокировка. Все это не только не способствует продвижению "такого" кода в массы, 
но даже вполне адекватного любого посетителя сайта вовсе отпугнет чем то непонятно-страшшШшным. 
Будучи посетителем сайта с таким предупреждением я бы точно прекратил общаться с таким сайтом.





Это сообщение отредактировал(а) YahоО - 15.2.2021, 11:10
PM MAIL   Вверх
ksnk
Дата 15.2.2021, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Вообще-то IE уже давно реализовал Copy-Paste в своем браузере, и после чего сразу все начали волоса во всех местах рвать и лавочку моментально прикрыли. 

По сути - непосредственный доступ к клипборду не так чтобы и нужен в реальной жизни, ну разве что действительно для кражи паролей. Скопировать неведомую текстовую хрень в клипборд пользователя можно без разрешения. Дальше - достаточно самого пользователя уговорить вставить скопированный им самим текст в специальное место. Потом по onchange забрать и делать с ним что надо. 



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
YahоО
Дата 15.2.2021, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 11.6.2015

Репутация: 1
Всего: 1



Таки да, единственное это уговорить посетителя, потому как уговорить браузер выполнить клик keyCode:86,ctrlKey:true бесполезно.
Ну и ладно, без копипаста тоже можно жить ))


Это сообщение отредактировал(а) YahоО - 15.2.2021, 11:32
PM MAIL   Вверх
_zorn_
Дата 2.4.2021, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: 1
Всего: 12



...

Добавлено @ 20:29
Цитата(YahоО @  15.2.2021,  18:31 Найти цитируемый пост)
Таки да, единственное это уговорить посетителя

И это правильно. Я бы не хотел чтобы каждый сайт читал (и отсылал в неведомые дали) мой клипборд без разрешения например по интервалу (а там пароли например частенько).

Это сообщение отредактировал(а) _zorn_ - 2.4.2021, 20:30
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1175 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.