document.onmousemove / onmmouseup предотвращает выделение текста при вводе IE или текстовой области - PullRequest
1 голос
/ 23 февраля 2010

всякий раз, когда я изменяю атрибуты документа onmousemove или onmouseup, например:

document.onmousemove = myOnMouseMove;

document.onmouseup = myOnMouseUp;

Это мешает мне выбирать текст в любых input type = 'text' или textarea элементах в Internet Explorer (пробовал в ie7 и ie8, отлично в firefox). Если я удаляю или из них, это позволяет мне снова выделять текст, но мне действительно нужно и то, и другое, чтобы моя домашняя функция перетаскивания работала в другом месте на странице.

Есть ли какой-нибудь способ, которым я могу сохранить функциональность по умолчанию функций onmouseXXX и прикрепить мою функцию к концу? Или есть лучший способ сделать это?

У меня также есть та же проблема с использованием атрибута onkeyup текстовой области, заставляющего мигать текстовый курсор к концу текста.

Спасибо

Ответы [ 2 ]

1 голос
/ 23 февраля 2010

С вами все будет в порядке, если вы не вернете 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 голосов
/ 23 февраля 2010

Если вам нужен метод перетаскивания, который, по-видимому, и является причиной, по которой вы хотите этого в первую очередь, я могу горячо рекомендовать , а не , пытаясь его кодировать самостоятельно. Вместо этого используйте популярный фреймворк, такой как YUI или jQuery. Они достаточно легкие и предлагают разумную совместимость с различными браузерами. На самом деле, изобретать это колесо неинтересно.

...