[問題] IE 以js寫拖曳功能會lag

看板Web_Design作者 (俠客)時間17年前 (2009/02/11 22:53), 編輯推噓2(206)
留言8則, 5人參與, 最新討論串1/1
小弟我上網 google 了一些教學,用 javascript 實作了 div 的拖曳功能 但我發現,在背景可能有點複雜的情況下 ie 拖曳時會顯得 lag 而 ff 則還好 不知道有沒有辦法解決這個問題? 還是寫法不好? 先謝謝各位了 以下是我拖曳功能的原碼 -- var dragapproved = false; var dragObj = null; var imgRelativeTop; var imgRelativeLeft; function dragDrop(evt) { var e = evt || window.event; dragObj.style.left = e.clientX - imgRelativeLeft - parseInt(dragObj.style.marginLeft) + document.body.scrollLeft; dragObj.style.top = e.clientY - imgRelativeTop - parseInt(dragObj.style.marginTop) + document.body.scrollTop; return false; } function beginDrag(evt, obj) { dragObj = obj; if (dragapproved == false) { imgRelativeTop = evt.clientY - getIdTop(dragObj); imgRelativeLeft = evt.clientX - getIdLeft(dragObj); dragapproved = true; } document.onmousemove = dragDrop; document.onmouseup = function() { dragObj = null; dragapproved = false; document.onmousemove = null; }; return false; } function getIdTop(tmpObj) { var obj = tmpObj; var curTop = 0; if (obj.offsetParent) { do { curTop += obj.offsetTop; } while(obj = obj.offsetParent); } else if (obj.y) curTop += obj.y; return curTop; } function getIdLeft(tmpObj) { var obj = tmpObj; var curLeft = 0; if (obj.offsetParent) { do { curLeft += obj.offsetLeft; } while(obj = obj.offsetParent); } else if (obj.x) curLeft += obj.x; return curLeft; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.164.207

02/11 22:54, , 1F
好眼熟的id, 國中看過
02/11 22:54, 1F

02/11 22:57, , 2F
ie跑js本來就慢╮(─_─)╭
02/11 22:57, 2F

02/11 23:05, , 3F
我也覺得我id很演熟._." 不是啦XD 所以沒有解決的辦法了嗎
02/11 23:05, 3F
※ 編輯: seoker 來自: 122.117.164.207 (02/11 23:43)

02/11 23:48, , 4F
你可以用YUI試試看
02/11 23:48, 4F

02/12 00:28, , 5F
我個人推薦jquery 我在ie6 ff3及chrome 都有不錯的表現
02/12 00:28, 5F

02/12 13:09, , 6F

02/12 20:59, , 7F
感謝樓上各位大大,不過用了 YUI 依然會lag ~"~
02/12 20:59, 7F

02/12 21:00, , 8F
是還有什麼其他因素嗎,被拖曳的東西太複雜?
02/12 21:00, 8F
文章代碼(AID): #19akPG1w (Web_Design)