Подсказки (title = "...") не будут отображаться в Firefox - PullRequest
7 голосов
/ 17 июня 2009

У меня есть элемент с атрибутом title (т. Е. Всплывающая подсказка), завернутый в какой-то контейнер:

<div id="foo">
    <input type="text" title="A tooltip" />
</div>

и я прикрепляю слушатель события "mousemove" к контейнеру и прекращаю распространение события:

document.getElementById('foo').addEventListener(
    'mousemove',
    function(e) { e.stopPropagation() },
    false
)

Эта комбинация остановки распространения «движений мыши» на контейнере теперь предотвращает отображение всплывающей подсказки для внутреннего текстового поля, в Firefox 2 и выше. Я пробовал FF 2 [.0.0.20], 3 [.0.11] и последнюю версию 3.5 (Windows Server 2003, XP).

В качестве быстрого упражнения пользователи Firefox могут увидеть эту ошибку в действии, выполнив следующую эквивалентную логику, как указано выше в адресной строке:

javascript:void($('div.vote').mousemove(function(e){ e.stopPropagation() }))

Теперь наведите указатель мыши на любой из значков "вверх", "вниз" или "звездочка" (избранное) для этого вопроса. Всплывающие подсказки больше не появляются. Опять же, только в Firefox .

У кого-нибудь есть обходной путь для этого поведения / ошибки в Firefox? Кто-нибудь еще был свидетелем этого?

Обновление : Похоже, что Firefox использует «остановку мыши» для вызова всплывающих подсказок в браузере Chrome (например, кнопки «назад» / «вперед»). См. https://bugzilla.mozilla.org/show_bug.cgi?id=82953. Однако я не могу сказать, влияет ли это на DOM.

Обновление : похоже, Firefox 10 был последней версией, демонстрирующей такое поведение. Firefox 11.0 и более поздние версии отображают всплывающие подсказки независимо от распространения событий.

Обновление : Firefox 33 (.1) больше не демонстрирует это поведение.

Ответы [ 2 ]

1 голос
/ 09 ноября 2009

Я подтвердил эту проблему. Я даже пытался распространить событие вручную на только поле ввода, используя этот код:

<div id="foo" title="A tooltip 2"> <input title="A tooltip" type="text" id="bar"/>
</div>
<script type="text/javascript">
document.getElementById('foo').addEventListener(
    'mouseover',
    function(e) {
        e.stopPropagation();
        if (document.createEvent) {
            var inputBox = document.getElementById('bar');
            var evt = document.createEvent("MouseEvents");
            evt.initMouseEvent("mousemove", true, true, window, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, false, false, false, false, null, null);
            inputBox.dispatchEvent(evt);
        }
    },
    false
)
</script>

Без кубиков. Однако другие события мыши, в том числе при наведении курсора, работают нормально.

Я считаю, что это ошибка. Хотя он не указан в bugzilla, поиск, по-видимому, указывает на корреляцию между событием "наведение мыши" и подсказками.

Вы можете скачать последнюю версию Firefox за ночь * здесь и посмотреть, есть ли она там до сих пор. Если это так, подайте ошибку .

В качестве альтернативы я бы посмотрел, может ли наведение мыши дать вам желаемый эффект.

0 голосов
/ 04 июля 2012

Я недавно прочитал, что некоторые надстройки Firefox (например, панель инструментов Google) приводят к проблемам с подсказками title. Отключите их и проверьте, решает ли это вашу проблему.

...