[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 불가능한 요소부터 출발선택 불가능

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*