내가 텍스트 필드에서 값을 읽을 때 해당 onpaste
함수를 호출 할 때 필드 (붙여 넣기 작업 전에 하나의 값)가 아닌 새 값 (붙여 넣기 이후 조작). http://jsfiddle.net/qsDnr/붙여 넣기시 텍스트 입력란의 새로운 값을 가져 오는 방법은 무엇입니까?
코드의 사본은 다음과 같습니다 :
<!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>
은 다음 단계로 동작을 확인할 수 있습니다 여기에
이 동작의 데모입니다.- 문자열
foo
을 클립 보드에 복사하십시오. - 텍스트 영역을 마우스 오른쪽 버튼으로 클릭하고 '붙여 넣기'를 선택하십시오. div 요소에 아무것도 표시되지 않습니다.
- 텍스트 영역을 마우스 오른쪽 버튼으로 클릭하고 '붙여 넣기'를 다시 선택하십시오.
foo
이 div 요소에 나타납니다. 난 항상 붙여 넣기 작업과 텍스트 영역 요소에 업데이트 된 것을 표시하기 위해 div 요소를 원하기 때문에
는 원하는 출력은 2 단계 각각 3 단계에서 foo
및 foo foo
입니다. 원하는 출력을 얻을 내가 관리해야
한 가지 방법은 그래서 대신 내가
textareaElement.onpaste = function() {
window.setTimeout(update, 100);
};
이 시간 (데모 가지고
textareaElement.onpaste = update
의, window.setTimeout()
와 update()
함수 호출을 지연하는 것입니다 : http://jsfiddle.net/cwpLS/). 이것은 내가 원하는 것을 해낸다. 그러나 이것은 내가 원하는 것을 직접적으로 수행하는 것보다는 해결 방법과 같이 느낀다. 이 작업을 수행 할 수있는 다른 방법이 있는지 알고 싶습니다.
[이 이벤트] (https://developer.mozilla.org/en/DOM/element.onpaste)는 사용자가 텍스트를 붙여 넣으려고 할 때 보내집니다 - 텍스트를 붙여 넣기 전에 onpaste가 트리거 될 수 있습니다. – Joseph
'event.clipboardData.getData ('text/plain')'붙여 넣기는 가능하지만 모든 브라우저 및 현재 텍스트에서 사용할 수 있는지 잘 모르며 선택도 고려해야합니다. 시간 초과를 사용하거나 onkeyup/onmouseup을 추적해야합니다. – kirilloid
@Joseph 동의합니다.나는이 문제를 해결할 더 좋은 방법이 있는지, 내가이 문제에서 설명했듯이, 해결하려고하는 문제가'setTimeOut'으로 가장 잘 해결되는지를 파악하려고 노력하고있다. –