집 >
웹 프론트엔드 >
JS 튜토리얼 >
Node.js 제어 파일을 드래그하고 드래그 콘텐츠 구현 코드를 가져옵니다.
Node.js 제어 파일을 드래그하고 드래그 콘텐츠 구현 코드를 가져옵니다.
小云云
풀어 주다: 2018-02-22 09:03:24
원래의
1497명이 탐색했습니다.
js가 모니터링할 수 있는 드래그 이벤트에는 drag, dragend, dragenter, dragexit(브라우저에서 구현되지 않음), dragleave, dragover, dragstart 및 drop이 포함됩니다. 자세한 내용은 MDN을 참조하세요. 그 중 파일 드래그와 관련된 이벤트에는 dragenter(파일 드래그 앤 드롭), dragover(파일 드래그 앤 일시 중지), dragleave(파일 드래그 앤 드롭), drop(파일 드래그 앤 드롭) 등이 있습니다.
드래그 이벤트는 지정된 DOM 요소 또는 전체 페이지에 바인딩될 수 있습니다.
var dropEle = document.querySelector('#dropZone');
dropEle.addEventListener('drop', function (e) {
//
}, false);
document.addEventListener('drop', function (e) {
//
}, false);
로그인 후 복사
기본 동작 방지
일반적으로 말하면 드래그 앤 드롭 파일을 드롭 이벤트에 처리하기 위한 비즈니스 로직만 작성하면 됩니다. 왜 dragenter, dragover 및 dragleave의 세 가지 이벤트를 바인딩해야 합니까? 모직물?
드래그 이벤트를 처리하지 않는 브라우저로 파일을 드래그하면 브라우저가 파일을 열게 되기 때문입니다. 예를 들어, 사진을 드래그하면 PDF 리더가 없으면 브라우저가 사진을 엽니다. 파일을 열 수도 있습니다. PDF를 브라우저로 드래그하면 브라우저에서 PDF 파일이 열립니다.
브라우저가 드래그한 파일을 열면 페이지가 넘어가는 대신 드래그된 파일을 가져오기를 바랍니다. 위에서 언급했듯이 드래그된 파일을 여는 것은 브라우저의 기본 동작입니다. 이 기본 동작을 방지해야 하는 경우 위 이벤트에서 이를 방지해야 합니다.
dropZone.addEventListener("dragenter", function (e) {
e.preventDefault();
e.stopPropagation();
}, false);
dropZone.addEventListener("dragover", function (e) {
e.preventDefault();
e.stopPropagation();
}, false);
dropZone.addEventListener("dragleave", function (e) {
e.preventDefault();
e.stopPropagation();
}, false);
dropZone.addEventListener("drop", function (e) {
e.preventDefault();
e.stopPropagation();
// 处理拖拽文件的逻辑
}
로그인 후 복사
실제로 dragenter는 기본 동작을 차단하지 않으며 브라우저가 파일을 열도록 트리거하지 않습니다. 일부 브라우저에서 발생할 수 있는 호환성 문제를 방지하기 위해 드래그 주기의 모든 이벤트는 기본 동작을 차단하고 방지합니다. 이벤트가 터집니다.
드래그된 파일 가져오기
드롭 이벤트의 콜백에 있는 이벤트 객체에서 파일 객체를 가져옵니다.
이벤트 객체에서 DataTransfer 형태의 데이터인 e.dataTransfer와 같은 속성은 다음과 같은 속성을 가지고 있습니다. 디 일부 호환성 문제를 해킹하려면