假設我們將.click()
處理程序附加到$(document).ready
回調中的錨點(<a>
)標記。此處理程序將取消默認操作(在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')? – 2010-07-10 18:07:33
這些示例根據是否啓用輸出緩衝或使用分塊編碼而有所不同。 – galambalazs 2010-07-10 18:08:56
假設啓用緩衝,這三個例子中的哪一個最適合我的目標?分塊編碼呢? – 2010-07-10 18:11:50