Komut dosyamın panonun içeriğini algılamasını ve sayfa açıldığında, kullanıcıdan herhangi bir girdi olmaksızın bir metin alanına yapıştırmasını sağlayacak bir yol öğrenmek istiyorum. Nasıl yapılabilir?
Komut dosyamın panonun içeriğini algılamasını ve sayfa açıldığında, kullanıcıdan herhangi bir girdi olmaksızın bir metin alanına yapıştırmasını sağlayacak bir yol öğrenmek istiyorum. Nasıl yapılabilir?
Yanıtlar:
window.clipboardData.getData('Text')
bazı tarayıcılarda çalışacaktır. Ancak, çalıştığı birçok tarayıcı, kullanıcıya web sayfasının panoya erişiminin olmasını isteyip istemediğini soracaktır.
Kullanım yeni pano API aracılığıyla, navigator.clipboard
. Şu şekilde kullanılabilir:
navigator.clipboard.readText()
.then(text => {
console.log('Pasted content: ', text);
})
.catch(err => {
console.error('Failed to read clipboard contents: ', err);
});
Veya eşzamansız sözdizimiyle:
const text = await navigator.clipboard.readText();
Bunun kullanıcıya bir izin isteği iletişim kutusu göndereceğini unutmayın, bu nedenle komik bir iş mümkün değildir.
Konsoldan çağrıldığında yukarıdaki kod çalışmayacaktır. Yalnızca kodu etkin bir sekmede çalıştırdığınızda çalışır. Kodu konsolunuzdan çalıştırmak için bir zaman aşımı belirleyebilir ve web sitesi penceresini hızlı bir şekilde tıklayabilirsiniz:
setTimeout(async () => {
const text = await navigator.clipboard.readText();
console.log(text);
}, 2000);
Google geliştirici belgelerinde API ve kullanım hakkında daha fazla bilgi edinin .
setTimeout
ardından sayfada geri tıklayarak test edebilirsiniz .
Kullanabilirsiniz
window.clipboardData.getData('Text')
IE'de kullanıcının panosunun içeriğini almak için. Ancak, başka bir tarayıcıda, panoya erişmek için standart bir arayüz olmadığından, içeriği almak için flash kullanmanız gerekebilir. Sıfır Clipboard eklentisini deneyebilirsin
Aşağıdakiler size seçilen içeriği ve panoyu güncellemeyi verecektir.
Öğe kimliğini copy olayı ile bağlayın ve ardından seçilen metni alın. Metni değiştirebilir veya değiştirebilirsiniz. Panoyu alın ve yeni metni ayarlayın. Tam biçimlendirmeyi elde etmek için türü "text / hmtl" olarak ayarlamanız gerekir. Ayrıca, öğe yerine belgeye de bağlayabilirsiniz.
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();
});