2012-11-15 5 views
1

Chrome에서 dataTransfer와 관련하여 정말로 펑키 한 문제가 있습니다. 24.0.1312.5 나는 몇 가지 아이디어를 얻을 수 있기를 바랍니다. 기본적으로, 나는 nodeIterator을 사용하여 iframe에서 유용한 요소를 골라냅니다. 이러한 각 요소에 대해 콘텐츠를 삭제할 수있는 이벤트 리스너를 추가하고 있습니다. 나는 코드의이 비트에 문제가 있어요 :Chrome dataTransfer.types를 객체로 처리하기

:

figure.draggable = 'true'; 
figure.addEventListener('dragstart', function (e) { 
    e.dataTransfer.setData('text/uri-list', img.src); 
    e.dataTransfer.setData('text/plain', img.alt); 
    e.dataTransfer.setData('application/x-trash.delete', img.id); 
}); 

내가 콘솔에서 얻을 오류는 이것이다 : 여기

currentNode.addEventListener('dragover', function (e) { 
    // Only accept images 
    // Error occurs in below conditional 
    if (e.dataTransfer.types.contains('text/uri-list')) { 
     e.preventDefault(); 
    } 
}); 

하면 데이터를 추가 내 코드의 일부이다

Uncaught TypeError: Object text/plain,text/uri-list,application/x-trash.delete 
has no method 'contains' 

나는이 문제를 재연 할 수 있어야하는 fiddle을 작성했으나 물론 정상적으로 작동합니다.

어떤 아이디어가 있다면 어떨까요? 또는 코드의 다른 관련 부분을 확인해야합니까?

답변

3

Chrome에서 반환 된 dataTransfer.types는 Array입니다. 해결 방법에 contains 메소드 대신 indexOf()를 사용할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 완전히 다른 방식으로이 기능을 구현 한 결과 내 문제를 해결할 수 있는지 여부를 확인할 수 없지만 문제는 그대로 나타납니다. 다음 주에 다른 응답이 없으면 답을 수락합니다. –

관련 문제