Можно ли отличить клик от выбора? - PullRequest
0 голосов
/ 27 сентября 2011

У меня есть div со скрытым ребенком. Нажатие на div переключит видимость ребенка. Это хорошо работает.

Теперь пользователь хочет выделить какой-нибудь текст у ребенка. Перетаскивание выделения работает, но как только кнопка мыши отпущена, div закрывается (из-за обработчика inClick).

Если возможно, я бы все же хотел иметь возможность закрыть div из любого места ребенка, потому что ребенок может быть довольно большим (сотни строк, поэтому было бы скучно переходить на div, чтобы переключить ребенка).

Должен работать с IE6 + и всеми вменяемыми браузерами. Я не могу использовать jQuery напрямую :-(, но я могу скопировать код из jQuery, поэтому, если у jQuery есть решение, я его клонирую.

Предложения

Ответы [ 2 ]

1 голос
/ 27 сентября 2011

Вы можете иметь переключатель управления на стороне DIV:

toggle.onclick = function () { 
    if ( this.className === 'closed' ) {
        this.className = '';
        content.style.display = '';
    } else {
        this.className = 'closed';
        content.style.display = 'none';
    }
};

Демонстрационная версия: http://jsfiddle.net/HcVfW/

0 голосов
/ 27 сентября 2011

Вы можете проверить window.getSelection(), чтобы проверить, содержит ли оно что-либо, прежде чем закрывать свой внутренний div.

Для IE6 вы захотите заменить это на document.selection.

Обратите внимание, что это является собственностью IE, поэтому вы захотите определить, какой метод использовать при обнаружении объектов.

Рабочая демонстрация

...