onpaste
işlevi çağrıldığında bir textarea alanından değer okumayı denediğimde, alanın eski değerini (yapıştırma işleminden önceki işlem), yeni değeri değil (yapıştırma işleminden sonraki değer) alıyorum. operasyon). http://jsfiddle.net/qsDnr/Bir textarea giriş alanının yeni değeri yapıştırmaya nasıl alınır?
kodunun bir kopyası aşağıdaki gibidir:
<!DOCTYPE html>
<html>
<head>
<title>On Paste</title>
<script type="text/javascript">
var textareaElement;
var previewElement;
function update()
{
previewElement.innerHTML = textareaElement.value;
}
window.onload = function() {
textareaElement = document.getElementById('textarea');
previewElement = document.getElementById('preview');
textareaElement.onpaste = update
}
</script>
</head>
<body>
<textarea id="textarea">
</textarea>
<div id="preview">
</div>
</body>
</html>
Aşağıdaki adımlarla davranışı doğrulayabilirsiniz İşte
bu davranışın bir tanıtımdır.- Dize
foo
panonuza kopyalayın. - Textarea alanına sağ tıklayın ve 'Yapıştır' seçeneğini seçin. Div öğesinde hiçbir şey görünmez.
- Textarea alanına sağ tıklayın ve tekrar 'Yapıştır'ı seçin. Div öğesinde
foo
görünür. Hep yapıştırma işlemi ile textarea elemanı güncellendi göstermek için div öğesi istediğim için
, istenen çıkış 2. adımda sırasıyla 3. adımda foo
ve foo foo
olduğunu. istenen çıktı almak için ben başarmış
bir yolu böylece bunun yerine
textareaElement.onpaste = function() {
window.setTimeout(update, 100);
};
bu sefer (demo var
textareaElement.onpaste = update
arasında, window.setTimeout()
ile update()
işlev çağrısını geciktirerek geçerli: http://jsfiddle.net/cwpLS/). Bu istediğimi yapar. Ancak, bu, istediğimi yapmanın basit bir yolundan ziyade bir çözüm gibi görünüyor. Bunu yapmak için alternatif ya da daha iyi bir yol olup olmadığını bilmek istiyorum.
[Bu olay] (https://developer.mozilla.org/en/DOM/element.onpaste) kullanıcı * metni yapıştırmak için * girişimde bulunduğunda - metin yapıştırılmadan önce bu on macunun tetiklendiği anlamına gelebilir. – Joseph
'event.clipboardData.getData ('text/plain')' içerik almayı sağlar, yapıştırılır, ancak her tarayıcıda mevcut olduğundan emin değilim ve mevcut metin ve seçim de dikkate alınmalıdır. Korkarım, zaman aşımını kullanmalı veya 'onkeyup' /' onmouseup' komutunu izlemelisiniz. – kirilloid
@Joseph Katılıyorum.Çözmeyi denediğim problemin, bu yazımda açıkladığım gibi "setTimeOut" ile veya bu sorunu çözmenin daha iyi yolları varsa çözülmeye çalışıyorum. –