Я хотел бы знать, как заставить мой сценарий обнаруживать содержимое буфера обмена и вставлять его в текстовое поле при открытии страницы без ввода данных пользователем. Как это сделать?
javascript
clipboard
paste
Габриэле Чирулли
источник
источник
Ответы:
window.clipboardData.getData('Text')
будет работать в некоторых браузерах. Однако во многих браузерах, где это действительно работает, пользователю будет предложено указать, желает ли он, чтобы веб-страница имела доступ к буферу обмена.источник
Используйте новый API буфера обмена через
navigator.clipboard
. Его можно использовать так:navigator.clipboard.readText() .then(text => { console.log('Pasted content: ', text); }) .catch(err => { console.error('Failed to read clipboard contents: ', err); });
Или с синтаксисом async:
const text = await navigator.clipboard.readText();
Имейте в виду, что это предложит пользователю диалоговое окно запроса разрешения, так что никакой забавный бизнес невозможен.
Приведенный выше код не будет работать, если его вызвать с консоли. Это работает только при запуске кода на активной вкладке. Чтобы запустить код с консоли, вы можете установить тайм-аут и быстро щелкнуть в окне веб-сайта:
setTimeout(async () => { const text = await navigator.clipboard.readText(); console.log(text); }, 2000);
Подробнее об API и использовании читайте в документации для разработчиков Google .
Спецификация
источник
setTimeout
, а затем вернувшись на страницу.Ты можешь использовать
window.clipboardData.getData('Text')
чтобы получить содержимое буфера обмена пользователя в IE. Однако в другом браузере вам может потребоваться использовать флеш-память для получения контента, поскольку нет стандартного интерфейса для доступа к буферу обмена. Может быть, вы можете попробовать этот плагин Zero Clipboard
источник
Далее вы получите выбранный контент, а также обновите буфер обмена.
Свяжите идентификатор элемента с событием копирования, а затем получите выделенный текст. Вы можете заменить или изменить текст. Получите буфер обмена и установите новый текст. Чтобы получить точное форматирование, вам нужно установить тип как «text / hmtl». Вы также можете привязать его к документу вместо элемента.
document.querySelector('element').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(); });
источник