Припустимо, що ми прикріплюємо .click()обробник до <a>тегу anchor ( ) у $(document).readyзворотному виклику. Цей обробник скасує дію за замовчуванням (слідуючи наведеній href) та покаже попередження.
Я хотів би знати, коли саме буде виконаний зворотний виклик і чи можливо для користувача натиснути на прив’язку (документ показаний у браузері), але подія ще не приєднана.
Ось різні HTML-сторінки, які містять прив'язку, але порядок включення сценаріїв різний. Яка різниця (якщо така є) між ними? Чи будуть різні браузери поводитися по-різному?
Сторінка 1:
<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="http://www.google.com">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="http://www.google.com">Test</a>
<script type="text/javascript">
$(function() {
$('a').click(function() {
alert('overriding the default action');
return false;
});
});
</script>
</body>
</html>
Сторінка 3:
<html>
<head>
<title>Test 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<a href="http://www.google.com">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? Чи можна їх робити паралельно?
onclickабо приєднатиclickобробник відразу після посилання (не використовуючи$(document).ready)?