Я хотів би знати спосіб змусити мій сценарій виявити вміст буфера обміну та вставити його в текстове поле, коли сторінку відкрито, без введення користувачем. Як це можна зробити?
Я хотів би знати спосіб змусити мій сценарій виявити вміст буфера обміну та вставити його в текстове поле, коли сторінку відкрито, без введення користувачем. Як це можна зробити?
Відповіді:
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);
});
Або з асинхронним синтаксисом:
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. Однак в іншому браузері вам може знадобитися використовувати flash для отримання вмісту, оскільки немає стандартного інтерфейсу для доступу до буфера обміну. Можливо, ви можете спробувати цей плагін 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();
});