2013-05-23 11 views
8

Mam wiążący pewne kod do zdarzenia dragstart z jQuery tak:dataTransfer.setData nie działa w IE9

$new.on('dragstart', function(event) { 
    event.originalEvent.dataTransfer.setData("text/html", $new.clone().wrap('<p>').parent().html()); 
}); 

$new jest obiektem jQuery. Celem jest dołączenie html przeciągniętego elementu do zdarzenia, aby móc utworzyć kopię po upuszczeniu. Chrome nie potrzebuje tego zdarzenia. Firefox działa po dodaniu tego kodu. Ale IE9 rzuca SCRIPT65535: Unexpected call to method or property access., gdy zdarzenie zostanie wyzwolone. Oto jsFiddle: http://jsfiddle.net/j52EM/3/

Jak mogę to zrobić dla IE?

+0

Możliwy duplikat funkcji [przeciągnij i upuść nie działa w IE - Javascript, HTML5] (https://stackoverflow.com/questions/12803235/drag-and-drop-not-working-in-ie-javascript-html5) – user10089632

Odpowiedz

12

w ie jest tylko dwa parametry zgodnie z docs IE9 nie przyjmuje tekstu/html jako formatu. Używać tylko 'Tekst'

Oto próbka czyli według strony internetowej MSDN:

function InitiateDrag() 
// The setData parameters tell the source object 
// to transfer data as a URL and provide the path. 
{ 
    event.dataTransfer.setData("URL", oImage.src); 
} 

function FinishDrag() 
// The parameter passed to getData tells the target 
// object what data format to expect. 
{ 
    sImageURL = event.dataTransfer.getData("URL") 
    oTarget.innerText = sImageURL; 
} 
+0

Oto poręczne skrzypce, które znalazłem http: // jsfiddle. net/robertc/ASKte/4 / –

0

setData metoda oczekiwać danych String nie wpisać numer

setData('text',1) jest źle

setData('text',''+1) jest poprawna