1

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

文档.onmousemove = myOnMouseMove;

文档.onmouseup = myOnMouseUp;

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

有什么方法可以保留 onmouseXXX 函数的默认功能并将我的函数附加到末尾?还是有更好的方法来做到这一点?

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

谢谢

4

2 回答 2

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
    }
};
于 2010-02-23T10:04:37.690 回答
0

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

于 2010-02-23T00:36:32.967 回答