У меня есть элемент с a title
атрибут (т.е. подсказка), перенесенный в некоторый контейнер:
и я присоединяю a "mousemove"
слушатель события на контейнере и распространении события остановки:
document.getElementById('foo').addEventListener(
'mousemove',
function(e) { e.stopPropagation() },
false
)
Эта комбинация останавливающегося распространения "mousemoves" на контейнере теперь препятствует тому, чтобы подсказка собралась для внутреннего текстового поля в 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 прекратила перемещаться" для инициирования подсказок в хроме браузера (например, назад/вперед кнопки). См. https://bugzilla.mozilla.org/show_bug.cgi? id=82953. Однако я не могу сказать, влияет ли это на DOM.
Обновление: кажется, что Firefox 10 был последней версией, показывающей это поведение. Firefox 11.0 и вперед показывает подсказки независимо от распространения события.
Обновление: Firefox 33 (.1) больше выставки это поведение.
Я подтвердил эту проблему. Я даже попытался вручную передать событие только в поле ввода, используя этот код:
<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 здесь и посмотреть, есть ли она еще. Если это так, отправьте сообщение об ошибке .
В качестве альтернативы я бы посмотрел, может ли наведение указателя мыши дать желаемый эффект.