2012-02-13 156 views
1

我有以下拖放代碼。它在Firefox上正常工作,但在IE上不起作用。拖放代碼,適用於FireFox,但不適用於IE瀏覽器

//This function starts the event 
function dragStart(ev) { 
    ev.dataTransfer.effectAllowed= 'move'; //Makes the element movable 
    ev.dataTransfer.setData("Image", ev.target.getAttribute('id')); // Grabs the element by its id 
    return true; 
} 

//Prevents default but does not turn it off 
function dragEnter(ev) { 
    ev.preventDefault(); 
    return true; 
} 

//Turns off the dragover event and prevents default behavior 
function dragOver(ev) { 
    return false; 
} 

//This function performs the actual drop 
function dragDrop(ev) { 
    var oldImgId = ev.dataTransfer.getData("Image"); //The dragged element’s id is set to a variable 

    ev.preventDefault(); 
    moveImg(oldImgId); 
} 

我從IE中的這些錯誤,當我試圖拖動圖像:

1)

'target' is null or not an object line 71 
line 71 refers to: ev.dataTransfer.setData("Image", ev.target.getAttribute('id')); // Grabs the element by its id 

2)

Object doesn't support this property or method line 77 
line 77 refers to: ev.preventDefault(); 
+0

1)不IE報告錯誤? 2)你是否有例子顯示這個 - 像jsfiddle.net – mplungjan 2012-02-13 08:50:09

+0

請檢查我的編輯上面我的問題,thanx – 2012-02-13 09:04:27

+0

你可以請添加HTML或顯示這些事件如何附加的代碼。 – ManseUK 2012-02-13 09:29:47

回答

1

IE僅支持文本或URL作爲數據,因此 '圖像' 將不起作用。嘗試

ev.dataTransfer.setData("Text", ev.target.getAttribute('id')); 

而這裏的文檔: http://msdn.microsoft.com/en-us/library/ms536744(v=vs.85).aspx

+0

我試過了,但仍然無法正常工作,並且出現同樣的錯誤。 我能夠修復我在IE上獲得的錯誤,代替: 1)ev.dataTransfer.setData(「Image」,ev.target.getAttribute('id')); 與: var target =(ev.target)? ev.target:ev.srcElement; ev.dataTransfer.setData(「Text」,target.getAttribute('id')); 2)ev.preventDefault(); 與: if(ev.preventDefault){ev.preventDefault(); } else {ev.returnValue = false; } 現在我沒有從IE中得到任何錯誤,但拖動仍然不起作用 – 2012-02-13 12:43:59

+0

您是否也將「圖像」更改爲「文本」爲下面的行? var oldImgId = ev.dataTransfer.getData(「Image」); – 2012-02-13 12:56:25

+0

是的,在setData和getData – 2012-02-13 12:58:40

相關問題