Я хотел бы знать, как заставить мой сценарий обнаруживать содержимое буфера обмена и вставлять его в текстовое поле при открытии страницы без ввода данных пользователем. Как это сделать?
Я хотел бы знать, как заставить мой сценарий обнаруживать содержимое буфера обмена и вставлять его в текстовое поле при открытии страницы без ввода данных пользователем. Как это сделать?
Ответы:
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();
});