Chrome Javascript Double Alert Loop? - PullRequest
       16

Chrome Javascript Double Alert Loop?

0 голосов
/ 24 июня 2009

Этот простой код ниже выводит два оповещения вместо одного браузера Google Chrome. Можете сказать почему только в Chrome?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Can you tell?</title>
<script language="javascript" type="text/javascript">

function hitme()
{
alert('yep!');
}
</script>
</head>

<body>
<a href="#" onmouseover="hitme();">LINK</a>
</body>
</html>

Хром видит якорь как текст + его строку?

Что делает эту двойную коробку в Chrome?

Ответы [ 3 ]

5 голосов
/ 24 июня 2009

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

Вероятно, что происходит при наведении мыши несколько раз (обратите внимание, что наведение курсора мыши не совпадает с указанием мыши - примечание: не поддерживается) см. http://www.quirksmode.org/js/events_mouse.html для более подробной информации о событиях мыши.

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

1 голос
/ 24 июня 2009

Полагаю, это как-то связано с фокусом окна; если вы наведите курсор мыши на ссылку достаточно быстро, вы получите только одно окно с предупреждением. Не происходит в Safari для Mac fwiw.

0 голосов
/ 24 июня 2009

Моим первым предложением было бы попробовать Safari, чтобы было ясно, является ли проблема специфичной для chrome (например, ошибка chrome) или для webkit в целом (так для всех браузеров на основе webkit). Это возможно либо: D

(обратите внимание на людей, у которых есть этот ответ, я предположил, что сценарий Элемент mouseover -> alert (), оповещение определено как модальное, поэтому дальнейших наведений мыши на элемент больше не будет, и я предположил, что предупреждение было отменено за пределами области, содержащей div. В этом случае неверно для двух диалогов, независимо от различий модели событий между браузерами. Кроме того, Chrome достаточно «интересен», чтобы сделать весьма вероятным, что ему удалось испортить обработку событий над собственно webkit, поэтому я предполагаю, что это может быть ошибка chrome)

...