假设我们在 $(document).ready回调中将一个 .click()处理程序附加到一个锚(<a>)标记。此处理程序将取消默认操作(在 href之后)并显示警报。
我想知道的是回调的确切执行时间,用户是否有可能点击锚(文档已经在浏览器中显示) ,但事件还没有被附加。
下面是包含锚的不同 HTML 页面,但是包含脚本的顺序不同。他们之间(如果有的话)有什么区别?不同的浏览器会有不同的表现吗?
第一页:
<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>
第二页:
<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>
第三页:
<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 中逐步增强它,但这是一个更普遍的问题。
如果 Web 服务器快速生成 HTML,但 jquery 库需要时间从远程服务器获取,那么会发生什么情况?这会影响我的计划吗?与加载 DOM 相比,包含脚本的顺序是什么?它们能同时完成吗?