Javascript 를 사용하여 HTML 요소 및 파일을 드래그 앤 드롭하는 방법
드롭 효과를 정의하려면 다음 단계를 따라야합니다.
5.1. 결정 허용된 드롭 효과(s)에서 드래그 요소에 그것의 동작은 dragstart 이벤트 Handler
를 사용하 effectAllowed 속성에 dataTransfer 이벤트 속성을 정의 모든 하락 효과가 있는 것을 허용을 위해 적용되는 드래그 가능한 요소입니다.이것은 다른 드롭 위치를 정의 할 수 있고 드롭 위치마다 다른 드롭 효과를 처리 할 수 있으므로 수행됩니다.,
다음과 같은 테이블을 정의 가능한 effectAllowed 속성 값을 기반으로 반 docs:
5.2. 에 대한 각각의 위치를 정의,드롭 효과(s)에 대한 그것은 그것의 dragover 이벤트 Handler
정의 영향을 삭제해야 중 하나 허용되는 효과정에서는 동작은 dragstart 이벤트 처리기의 원본 위치에 있습니다.,
드롭 효과가 허용 된 드롭 효과 중 하나가 아닌 경우 허용 된 드롭 효과 중 하나로 설정됩니다.
드롭 효과가 정의되어야하는 드래그 오버 핸들러는 드래그 된 요소가 가능한 드롭 위치 위로 드래그 될 때 실행됩니다.다음은 특정 드롭 위치에 대한 드롭 효과를 정의하는 예입니다.
6)정의 드롭 영역(위치)
기본적으로 아무 요소에서 HTML 문서 할 수 있습니다., 그러나,그 변경될 수 있습을 확보하기 위해 요소를 드롭 영역이 있어야 합니다.
- 이 ondragover 이벤트 핸들러를 실행되는 경우 드래그 할 수있는 요소를 끌고 이 요소입니다. 이 이벤트 핸들러에서,드롭 위치의 드롭 효과는 단계 5.2 에서 앞서 언급한 바와 같이 정의된다.
- 드래그 가능한 요소가 드래그 위치/영역에서 삭제 될 때 실행되는 ondrop 이벤트 핸들러.
다음은 요소를 드롭 위치로 정의하는 예입니다.,
에 dragover 및 이벤트 처리,preventDefault()호출해야 합를 허용하려면 드롭다는 것을 나타냅 드롭을 허용하는 위치에 있습니다.
드롭이 조건이 사용되는 특정 상황에서만 허용되는 경우 드롭을 허용하기위한 조건이 충족되는 경우에만 preventDefault 를 추가하십시오. 이것은 드롭이 허용되어서는 안되는 조건이 충족되지 않으면 요소가 드롭 존이되지 않도록하기 위해 수행됩니다.,
dataTransfer 속성의 드래그 데이터 유형을 기반으로 드롭을 거부하는 것은 일반적인 경우입니다. 다음 예제에서는 드래그오버 핸들러가 있는 드롭 영역 요소에서 링크만 드롭할 수 있도록 허용함으로써 이를 보여 줍니다.
7)처리하는 요소를 삭
동안 놓기 이벤트,드래그 데이터 처리해야 합니다. 이를 위해 dataTransfer 이벤트 속성의 getData()메소드가 사용됩니다.,
getData()메소드를 검색 항목을 끌어서 놓으로 걸리는 하나의 인수의 유형의 데이터를 검색하고 문자열을 반환하는 값이 연결되어 있습니다.
allowedEffect 및 dropEffect 속성은 사용자에게 표시 될 피드백을 제어하는 데 도움이됩니다.
이러한 피드백을 처리하는 것은 개발자의 책임이며 드롭 이벤트 핸들러에서 구현되어야합니다. 예를 들어 요소를 검색하고 다른 부모에게 추가하면 이동하지만 노드를 복사하면 복사 효과가 발생합니다.,
경우 여러 드롭 효과에 대해 정의된 한 방울대 dropEffect 속성을 결정하는 데 사용됩 끌기 작업이 원하는 특정 드롭 이벤트입니다.다음은 드롭을 처리하는 예입니다.
해야 할 수도 있습 지원이 다른 종류의 데이터만을 검색하고자하는 가장 특정 유형입니다. MDN docs 의 다음 코드는이를 보여줍니다.,
8)사용 dragend 이벤트 확인하려면 드롭 성공적이었
의 끝에서 끌기 작업 dragend 이벤트가 발생 소스에서 요소입니다. 드래그 성공 또는 취소있어 여부 이벤트가 발생합니다.
을 확인하는 경우에는 끌기 작업을 성공적이었는지,의 값 dropEffect 확인할 수 있습으로 다음과 같다:
- 경우 dropEffect 숙박 시설의 값은”none”에 dragend 이벤트 처리기,그 다음 그것이 의미하는 끌기 작업을 가지고 취소됩니다.,
- 그렇지 않으면 dropEffect 속성의 값이 성공적으로 수행 된 작업입니다.
흠,그래서 어떻게 유용합니까?
source 요소 정보를 이용할 수 있 후에 성공적인 이동 작업 제거를 끌고 항목에서 오래 된 위치에 있습니다.
모에 HTML 요소의&드롭
참고:당신은 또한 복제에서 프로젝트 내 Github here.,
1) Detect the Drag & Drop Feature Support in Your Browser
Before using the HTML drag & drop API, add feature detection code to ensure browser support.
The following code is the feature detection code for the HTML drag & drop API from Modernizr.,
2)정의 드롭 영역(위치)
기본적으로 아무 요소에서 HTML 문서 할 수 있습니다. 그러나,그 변경될 수 있습을 확보하기 위해 요소를 드롭 영역이 있어야 합니다.
- 이 ondragover 이벤트 처리기 때 실행되는 파일(들)은/되고 있 끌 드롭 위치에 있습니다.
- ondrop 이벤트 핸들러는 파일(들)이/드롭 위치에 삭제 될 때 실행됩니다.,
에 의해 명시된 바와 같이 반 docs:
동작은 dragstart 및 dragend 이벤트가 발생하지 않을 때 파일을 드래그 앤 드롭으로 브라우저에서는 OS.
다음은 요소를 드롭 위치로 정의하는 예입니다.
3)처리하는 파일의 드롭
사용자를 삭제한 파일(s)드롭 영역,드롭 이벤트 트리거됩니다. 드롭 이벤트 중에 파일을 원하는대로 처리해야합니다.,
삭제 된 각 파일에 액세스하려면 이벤트의 DataTransfer 속성을 사용하여 파일 속성에 액세스하십시오. 삭제 된 파일에 액세스 한 후 파일 API 를 사용하여 처리하십시오.
브라우저가 지원하 DataTransferItemList 제공,당신은 그것을 사용할 수 있으로 getAsFile()메서드를 사용하는 대신 DataTransfer 제공하는 파일에 액세스합니다.
dragover 와 drop 이벤트 핸들러 모두에서 preventDefault()는 해당 위치에서 드롭이 허용되었음을 나타내므로 드롭을 허용하도록 호출해야합니다., 또한 파일을 열지 못하게합니다.이 동작은 웹 페이지에 파일을 놓을 때 발생하는 기본 동작입니다.
드롭이 조건이 사용되는 특정 상황에서만 허용되는 경우 드롭을 허용하기위한 조건이 충족되는 경우에만 preventDefault 를 추가하십시오. 이것은 드롭이 허용되어서는 안되는 조건이 충족되지 않으면 요소가 드롭 존이되지 않도록하기 위해 수행됩니다.
다음 예제는 MDN docs 에서 파일이 아닌 드래그 항목이 무시되는 삭제 된 파일 처리를 보여줍니다., Both possible ways are demonstrated in this
Demo on HTML Element’s Drag & Drop
Note: you can also clone the project from my Github here.