2010-02-23 53 views
1

選擇文本每當我改變的OnMouseMove或文檔的屬性onmouseup,例如:document.onmousemove/onmmouseup防止在IE輸入或文本域

document.onmousemove = myOnMouseMove;

document.onmouseup = myOnMouseUp;

它可以防止從我在任何輸入類型選擇文本= '文本'textarea的在Internet Explorer元素(IE7和IE8已經嘗試,在Firefox細)。如果我刪除了或者其中的,它允許我再次選擇文本,但我真的需要同時使我的家庭拖放功能在頁面的其他地方工作。

有什麼方法可以保留onmouseXXX函數的默認功能並將我的函數附加到最終?還是有更好的方法來做到這一點?

我也有同樣的問題,使用textarea的onkeyup屬性強制閃爍的文本光標到文本的末尾。

感謝

+0

這些特性,而不是屬性。 – 2010-02-23 09:54:19

回答

1

只要您不會從您的事件處理函數返回false或混淆用戶選擇,您應該沒問題。或者,您可以檢查事件的目標在事件處理程序過濾掉<input> S和<textarea> S:

document.onmousedown = function(evt) { 
    evt = evt || window.event; 
    var target = evt.target || evt.srcElement; 
    var tagName = target.nodeName.toLowerCase(); 
    if (tagName == "input" || tagName == "textarea") { 
     // Do nothing 
    } else { 
     // Do your stuff 
    } 
}; 
+0

謝謝,我管理通過切換onmousemove「屬性」爲null時,它不拖動,但此代碼可以肯定是有用的地方! – jade 2010-02-25 00:26:46

0

如果需要拖動和下降,這似乎是擺在首位想這樣做的原因,我誠心誠意推薦試圖代碼自己。相反,請使用流行的框架,如YUI或jQuery。它們相當輕巧,並提供合理的跨瀏覽器兼容性。真的,重塑這個輪子並不是件好事。

+0

感謝您的建議,如果我不得不再次這樣做,我可能會走下去的路徑,但現在它的所有編碼和工作方式,我希望它除了這一個最後一個bug .. 乾杯 – jade 2010-02-23 00:51:15