Предположим, что мы привязываем .click()
к тегу привязки (<a>
) в $(document).ready
обратный вызов. Этот обработчик отменяет действие по умолчанию (после href
) и показывает предупреждение.
То, что я хотел бы знать, - это то, когда будет выполняться обратный вызов, и можно ли кликнуть на якорь (документ был показан в браузере), но событие еще не установлено.
Вот несколько HTML-страниц, содержащих якорь, но порядок включения скриптов отличается. Какая разница (если есть) между ними? Будут ли разные браузеры вести себя по-другому?
Page1:
<html>
<head>
<title>Test 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$('a').click(function() {
alert('overriding the default action');
return false;
});
});
</script>
</head>
<body>
<a href="#" onclick="location.href='http://www.google.com'; return false;">Test</a>
</body>
</html>
Стр .2:
<html>
<head>
<title>Test 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
</head>
<body>
<a href="#" onclick="location.href='http://www.google.com'; return false;">Test</a>
<script type="text/javascript">
$(function() {
$('a').click(function() {
alert('overriding the default action');
return false;
});
});
</script>
</body>
</html>
Page3:
<html>
<head>
<title>Test 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<a href="#" onclick="location.href='http://www.google.com'; return false;">Test</a>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$('a').click(function() {
alert('overriding the default action');
return false;
});
});
</script>
</body>
</html>
Итак, возможно ли, что пользователь перенаправляется на href
, нажав на якорь и никогда не увидит предупреждение (игнорируя, конечно, случай, когда JavaScript отключен, конечно)? Может ли это произойти в любом из приведенных мной примеров?
Все, что мне нужно, это убедиться, что обработчик событий click
был прикреплен к якорю до того, как пользователь имеет возможность щелкнуть по этому якорю. Я знаю, что могу предоставить пустой href
, а затем постепенно увеличивать его в javascript, но это более общий вопрос.
Что произойдет, если HTML будет быстро сгенерирован веб-сервером, но библиотека jquery займет время, которое нужно извлечь с удаленного сервера? Это повлияет на мой сценарий? Каков порядок включения сценариев по сравнению с загрузкой DOM? Могут ли они выполняться параллельно?