Tôi muốn biết một cách để làm cho tập lệnh của tôi phát hiện nội dung của khay nhớ tạm và dán nó vào trường văn bản khi trang được mở mà không có đầu vào từ người dùng. Nó được hoàn thiện bằng cách nào?
Tôi muốn biết một cách để làm cho tập lệnh của tôi phát hiện nội dung của khay nhớ tạm và dán nó vào trường văn bản khi trang được mở mà không có đầu vào từ người dùng. Nó được hoàn thiện bằng cách nào?
Câu trả lời:
window.clipboardData.getData('Text')
sẽ hoạt động trong một số trình duyệt. Tuy nhiên, nhiều trình duyệt nơi nó hoạt động sẽ nhắc người dùng về việc họ có muốn trang web có quyền truy cập vào khay nhớ tạm hay không.
Sử dụng API khay nhớ tạm mới , thông qua navigator.clipboard
. Nó có thể được sử dụng như thế này:
navigator.clipboard.readText()
.then(text => {
console.log('Pasted content: ', text);
})
.catch(err => {
console.error('Failed to read clipboard contents: ', err);
});
Hoặc với cú pháp async:
const text = await navigator.clipboard.readText();
Hãy nhớ rằng điều này sẽ nhắc người dùng với một hộp thoại yêu cầu quyền, vì vậy bạn không thể làm gì được.
Đoạn mã trên sẽ không hoạt động nếu được gọi từ bảng điều khiển. Nó chỉ hoạt động khi bạn chạy mã trong một tab đang hoạt động. Để chạy mã từ bảng điều khiển của bạn, bạn có thể đặt thời gian chờ và nhấp vào cửa sổ trang web một cách nhanh chóng:
setTimeout(async () => {
const text = await navigator.clipboard.readText();
console.log(text);
}, 2000);
Đọc thêm về API và cách sử dụng trong tài liệu dành cho nhà phát triển của Google .
setTimeout
, sau đó nhấp lại vào trang.
Bạn có thể dùng
window.clipboardData.getData('Text')
để lấy nội dung của khay nhớ tạm của người dùng trong IE. Tuy nhiên, trong trình duyệt khác, bạn có thể cần sử dụng flash để lấy nội dung, vì không có giao diện chuẩn để truy cập vào khay nhớ tạm. Có thể bạn có thể thử plugin Zero Clipboard này
Sau đây sẽ cung cấp cho bạn nội dung đã chọn cũng như cập nhật clipboard.
Ràng buộc id phần tử với sự kiện sao chép và sau đó lấy văn bản đã chọn. Bạn có thể thay thế hoặc sửa đổi văn bản. Lấy khay nhớ tạm và đặt văn bản mới. Để có được định dạng chính xác, bạn cần đặt loại là "text / hmtl". Bạn cũng có thể liên kết nó với tài liệu thay vì phần tử.
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();
});