Подтвердить что ты не робот

Получить текущий буфер обмена?

Я хотел бы знать способ сделать мой script обнаружением содержимого буфера обмена и вставить его в текстовое поле при открытии страницы без ввода пользователем. Как это можно сделать?

4b9b3361

Ответ 1

Вы не можете знать, что находится в буфере обмена пользователя, если вы не использовали какой-либо флеш-бэкэнд при копировании текста.


Обновление: Более правильный ответ здесь

Ответ 2

window.clipboardData.getData('Text') будет работать в некоторых браузерах. Однако многие браузеры, где он работает, подскажут пользователю, хотите ли они, чтобы веб-страница имела доступ к буферу.

Ответ 3

В зависимости от того, когда вы читаете это, новый API буфера обмена может быть доступен через navigator.clipboard. Это можно использовать так:

navigator.clipboard.readText()
  .then(text => {
    console.log('Pasted content: ', text);
  })
  .catch(err => {
    console.error('Failed to read clipboard contents: ', err);
  });

Или с асинхронным синтаксисом:

const text = await navigator.clipboard.readText();

Имейте в виду, что это предложит пользователю диалоговое окно с запросом разрешения, так что никакие смешные дела невозможны.

(ПРИМЕЧАНИЕ: это не будет работать, если вызывается из консоли, но потребует прямого действия пользователя, такого как нажатие кнопки, спасибо @Artur)

Подробнее об этом

спекуляция

Ответ 4

Вы можете использовать

window.clipboardData.getData('Text')

чтобы получить содержимое пользовательского буфера обмена в IE. Однако в другом браузере вам может понадобиться использовать flash для получения контента, поскольку для доступа к буферу нет стандартного интерфейса. Возможно, вы можете попробовать этот плагин Zero Clipboard

Ответ 5

Далее вы получите выбранный контент, а также обновите буфер обмена.

Свяжите идентификатор элемента с событием копирования, а затем получите выделенный текст. Вы можете заменить или изменить текст. Получите буфер обмена и установите новый текст. Чтобы получить точное форматирование, вам нужно установить тип как "text/hmtl". Вы также можете привязать его к документу вместо элемента.

      $(ElementId).bind('copy', function(event) {
        var selectedText = window.getSelection().toString(); 
        selectedText = selectedText.replace(/\u200B/g, "");

        clipboardData = event.clipboardData || window.clipboardData || event.originalEvent.clipboardData;
        clipboardData.setData('text/html', selectedText);

        event.preventDefault();
      });