Angenommen, wir hängen einen .click()Handler an ein anchor ( <a>) -Tag im $(document).readyRückruf an. Dieser Handler bricht die Standardaktion (nach href) ab und zeigt eine Warnung an.
Ich würde gerne wissen, wann genau der Rückruf ausgeführt wird und ob der Benutzer auf den Anker klicken kann (das Dokument wurde im Browser angezeigt), aber das Ereignis wurde noch nicht angehängt.
Hier sind verschiedene HTML-Seiten, die einen Anker enthalten, aber die Reihenfolge der Aufnahme der Skripte ist unterschiedlich. Was ist der Unterschied (wenn überhaupt) zwischen ihnen? Verhalten sich verschiedene Browser unterschiedlich?
Seite 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>
Seite 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>
Seite 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>
Ist es also möglich, dass ein Benutzer hrefdurch Klicken auf den Anker zum weitergeleitet wird und die Warnung nie sieht (wobei der Fall von deaktiviertem Javascript natürlich ignoriert wird)? Könnte dies in einem der von mir angegebenen Beispiele passieren?
Ich muss lediglich sicherstellen, dass der clickEreignishandler an den Anker angehängt wurde, bevor der Benutzer auf diesen Anker klicken kann. Ich weiß, dass ich ein leeres bereitstellen hrefund es dann schrittweise in Javascript verbessern kann, aber dies ist eine allgemeinere Frage.
Was passiert, wenn der HTML-Code schnell vom Webserver generiert wird, die Abfrage der jquery-Bibliothek jedoch einige Zeit dauert, um von einem entfernten Server abgerufen zu werden? Wird dies mein Szenario beeinflussen? Wie ist die Reihenfolge der Aufnahme der Skripte im Vergleich zum Laden des DOM? Könnten sie parallel durchgeführt werden?
onclickdenclickHandler direkt nach dem Link zu verwenden oder anzuhängen (nicht zu verwenden$(document).ready)?