У меня проблема с собственными событиями Cross-Browser против событий CallBack.
У меня есть HTML-ссылка «Нажмите меня» с указанным href=""
. На dom:loaded
я прикрепляю функцию к этой ссылке (чтобы сделать Ajax Stuff).
Код JavaScript загружается в конце страницы в соответствии с рекомендациями YSlow.
Выпуск
Если вы загрузите эту страницу очень быстро (нажав F5), нажмите на ссылку, затем
-
alert()
не называется
- ссылка идет (перезагрузка страницы)
Это происходит, когда сервер зависает. На самом деле страница еще не загружена, и браузер выполняет код.
Демо
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
</head>
<body>
<a href="#toolate" id="action">Click Me</a>
<!-- According to YSlow Recommandation load at the bottom -->
<script src="../js/lib/prototype.js" type="text/javascript" language="JavaScript"></script>
<script>
/* <![CDATA[ */
document.observe('dom:loaded', function() {
$('action').observe('click', function(event){ alert("click"); Event.stop(event); });
});
/* ]]> */
</script>
</body>
</html>
Повернись :
Поворот должен добавить onClick="return false;"
:
<a href="#toolate" id="action" onClick="return false;">Click Me</a>
Работает для лагов, но не для быстрого щелчка. И мне не нравится такой поворот, потому что моя цель - убрать onclick
на всех <a href="">
С наилучшими пожеланиями