[html5] drag and drop


작성일자 : 2019-04-08

cross browser html5 drag and drop

html5 drag and drop 문제점 해결 기록

1. drop 영역 인식

ul (drop)/ li (drag) 구조에서 ul 에 margin 값이 있을 경우
drag and drop 동작할 때

browser영역drag and drop event
chromedrag and dropul margin/padding 은 ul의 영역 OdragOver
chromejavascriptul margin/padding 은 ul의 영역 OdragOver
iedrag and dropul margin/padding 은 ul의 영역 XdragLeave
iejavascriptul margin/padding 은 ul의 영역 OdragLeave

이로 인해 발생하는 이슈

dragLeave 일 때 ul 영역 안에 있으면 placeholder 유지가 되기 때문에
ie 에서는 ul 과 li 사이의 ul margin 공간에 drop 하면
placeholder 가 사라지지 않음.

해결

아직 정확히 해결된 이유를 모르겠음.

$(document.body).bind('dragover', function(e) {
  e.preventDefault();
  console.log('document.body dragover');
});

$(document.body).bind('dragenter', function(e) {
  e.preventDefault();
  console.log('document.body dragenter');
});

2. drag and drop 외 영역이 select 된 상태에서 drag

select 된 모든 element 가 함께 drag 되는 것으로 보임

해결

css user-select: none 추가

chrome 과 ie 차이

browser테스트결과
chromectrl + aselect 가능한 요소 클릭 후select 가능한 요소만 선택 가능
chromectrl + aselect 불가능한 요소 클릭 후select 가능한 요소만 선택 가능
chromemouse dragselect 가능한 요소부터 출발select 가능한 요소만 선택 가능
chromemouse dragselect 불가능한 요소부터 출발선택 불가능
iectrl + aselect 가능한 요소 클릭 후선택 가능
iectrl + aselect 불가능한 요소 클릭 후선택 불가능
iemouse dragselect 가능한 요소부터 출발선택 가능
iemouse dragselect 불가능한 요소부터 출발선택 불가능

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다