document.onmousemove / onmmouseup阻止在IE输入或textarea中选择文本

时间:2010-02-23 00:33:08

标签: javascript internet-explorer select text onmousemove

每当我改变文档的onmousemove或onmouseup属性时,例如:

  

document.onmousemove = myOnMouseMove;

     

document.onmouseup = myOnMouseUp;

它阻止我在Internet Explorer中的任何输入type ='text' textarea 元素中选择文本(在ie7和ie8中尝试过,在firefox中很好)。如果我删除其中的 ,它允许我再次选择文本,但我真的需要两个让我的自制拖放功能在页面的其他地方工作。

有什么方法可以保留onmouseXXX函数的默认功能并将我的功能附加到最后?或者有更好的方法来做这件事吗?

我也有同样的问题,使用textarea的onkeyup属性强制闪烁的文本光标到文本的末尾。

由于

2 个答案:

答案 0 :(得分:1)

只要您不从事件处理函数返回false或者弄乱用户选择,您就应该没问题。或者,您可以在事件处理程序中检查事件的目标,以过滤掉<input><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
    }
};

答案 1 :(得分:0)

如果你需要拖放,这似乎是首先想要这个的原因,我可以热烈地推荐尝试自己编码。相反,使用流行的框架,如YUI或jQuery。它们相当轻巧,并提供合理的跨浏览器兼容性。真的,重新发明这个轮子并不好玩。