ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
5976
5976
EMPFEHLEN
-
18.11.07 15:14 #1
- Registriert seit
- Jul 2007
- Beiträge
- 99
Hallo
wie kann man einen Klick auf einen Link abfangen, ohne das der Link speziell gekennzeichnet wird? Es geht um eine Website mit vielen Links, und es soll nicht in jedem A-Tag ein onClick definiert werden.
Dem Ziel soll nicht sofort gefolgt werden, sondern es soll erst eine Funktion aufgerufen werden. Diese schickt den Browser dann an das neue Ziel.
Ich wüsste wohl wie man den Click-Event global abfragt, aber wie verhindert man das der Browser sofort dem Ziel folgt?
-
das Event abbrechen sollte mit false gehen.
Nur dann geht nichtsmehr was ja auch nicht wirklich Sinn macht.
onclick = function() {
return false;
}
-
Hi,
willst du alle Links des Dokumentes so manipulieren, dass sie verzögert auf einen Klick reagieren?
In einem solchen Fall könntest du im onload-Event alle Links des Dokuments durchlaufen und automatisch mit einem onclick-Event versehen, in dem die gewünschte Funktion aufgerufen wird.
Willst du allerdings nur vereinzelte Links derartig behandeln, musst du dir eine andere Vorgehensweise überlegen. Eventuell alle Links mit einer ID versehen und diese in einem Array ablegen. Im onload-Event durchläufst du das ID-Feld, ermittelst das zugehörige Linkelement und weist die gewünschte Funktion zu.
Ciao
QuaeseVielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
----
Der "Fortsetzungsroman" auf www.leuteforum.de
New kind to realize large scalable projects with jQuery: jQuery SDK
-
18.11.07 18:51 #4
- Registriert seit
- Jul 2007
- Beiträge
- 99
Alle Links sollen abgefangen werden. Die auszuführende Operation kann im schlimmsten Fall gut und gerne mal eine Sekunde dauern. In jedem Fall muss sie aber zu Ende gebracht werden, bevor der Browser die Seite verlässt.
Wenn ich jedem Link einen onClick Event verpasse, wird dieser onClick Event auf jeden Fall ausgeführt oder folgt der Browser eventuell schneller dem Ziel, noch bevor die hinter onClick stehende Aktion vollständig ausgeführt wurde?
-
19.11.07 17:13 #5
- Registriert seit
- Jul 2007
- Beiträge
- 99
Habs ausprobiert: Der Browser folgt sofort dem Ziel, die Funktion im onClick-Event wird mitten drin abgebrochen.
Ist es möglich das Ziel eines Links beim Anklicken dynamisch zu verändern?
-
Hi,
ich weiss ja nicht, wie genau dein Dokument aussieht und was genau dein Vorhaben ist. Du kannst aber beispielsweise alle Links im onload-Event durchlaufen und bearbeiten. Dabei werden sie dahingehend manipuliert, dass bereits vorhandene Funktionen im onclick-Event wie gewohnt ausgeführt werden. Die Weiterleitung auf die Seite aus dem href-Attribut wird zeitverzögert (setTimeout) ausgeführt.
Beispiel:
Vielleicht kannst du damit etwas anfangen.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
<html> <head> <meta name="author" content="Quaese"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script type="text/javascript"> <!-- function onAfterClick(objLink){ if(confirm("Wollen Sie '" + objLink.href + "' besuchen?")){ self.location = objLink.href; } } function initLinks(){ var arrLinks = document.getElementsByTagName("a"); // Alle Links durchlaufen for(var i=0; i<arrLinks.length; i++){ // Falls bereits eine Funktion im onclick-Event vorhanden ist if(typeof arrLinks[i].onclick == "function") // Alte onclick-Funktion "speichern" arrLinks[i].old_onclick = arrLinks[i].onclick; // Link um onclick erweitern arrLinks[i].onclick = function(){ // Alte onclick-Funktion aufrufen if(typeof this.old_onclick == "function") this.old_onclick(); var objThis = this; // Weitere Funktion verzögert aufrufen window.setTimeout( function(){onAfterClick(objThis);} , 2000); return false; } } } window.onload = function(){ initLinks(); } //--> </script> </head> <body> <button onclick="derTest();">derTest</button> <a href="http://www.sueddeutsche.de" onclick="alert('Ich war schon da!');">www.sueddeutsche.de</a> <a href="http://www.tutorials.de">www.tutorials.de</a> <a href="http://www.google.de">www.google.de</a> </body> </html>
Ciao
QuaeseVielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
----
Der "Fortsetzungsroman" auf www.leuteforum.de
New kind to realize large scalable projects with jQuery: jQuery SDK
-
Sowas wie das hier?
http://www.tutorials.de/forum/javasc...nthandler.htmlSupermoto München :: Agentur für Webdesign, SEO und SEA - mediastuff.de :: Guter Provider gesucht?
"Lattenrost ist keine Geschlechtskrankheit!"
-
20.11.07 00:08 #8
- Registriert seit
- Jul 2007
- Beiträge
- 99
Danke Euch für die vielen Infos. Ich habe vieles ausprobiert und bin nun soweit, das wenn ich auf einen beliebigen Link klicke das href-ziel nicht verfolgt wird. Ein im Link notierter onclick-Event wird aber ausgeführt.
Eigentlich sollte es nun auch funktionieren, das der Browser dem Ziel folgt (ich weis, das klingt gerade alles etwas sinnfrei). Aber es tut sich nichts. So schauts aus:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
<a id="x" href="seite2.php" onClick="alert('inline_onclick');">seite2.php</a><br> <a id="y" href="seite2.php" onClick="alert('noch ein link mit inline_onclick');">testlink2</a> <a id="z" href="seite2.php" onClick="alert('test 3');">testlink3</a> <script type="text/javascript"> <!-- function addEvent(eo, eventType, function_name){ if (eo.addEventListener) { eo.addEventListener(eventType, function_name, false); } else if (eo.attachEvent) { eo.attachEvent("on"+eventType, function_name); } } function linkHrefAction() { var href = this.href + '?x=y'; alert('ab gehts: ' + href); redirect(); } function redirect(){ alert ('versuche weiterleitung...'); self.href = 'seite2.php'; } document.getElementById("x").onmouseover = function() { var original_onclick = this.onclick; addEvent(this, 'click', original_onclick); if(this.href && this.href != '#' && this.href != 'javascript:;') { addEvent(this, 'click', linkHrefAction); } this.onclick = new Function('return false;'); } document.getElementById("y").onmouseover = function() { var original_onclick = this.onclick; addEvent(this, 'click', original_onclick); if(this.href && this.href != '#' && this.href != 'javascript:;') { addEvent(this, 'click', linkHrefAction); } this.onclick = new Function('return false;'); } document.getElementById("z").onmouseover = function() { var original_onclick = this.onclick; addEvent(this, 'click', original_onclick); if(this.href && this.href != '#' && this.href != 'javascript:;') { addEvent(this, 'click', linkHrefAction); } this.onclick = new Function('return false;'); } //--> </script>
der code selbst wird noch optimiert, ich will natürlich nicht für jeden einzelnen Link so einen Block anlegen.
Das eizige was jetzt noch nicht geht ist das der Browser dem Ziel folgt. Im alert erscheint der richtige href-Inhalt. Wenn ich ein document.href außerhalb eines Funktionskontextes verwende geht es. Nur scheinar reagiert JavaScript hier allergisch auf eine Weiterleitung aus einer Funktion heraus.
Hat jemand eine Idee was man da tun kann? Getestet im Firefox...
Danke nochmal!
Gruß
FunkyMonkey
-
25.01.11 10:18 #9
- Registriert seit
- Jul 2008
- Beiträge
- 2
Für alle die ebenfalls über Suchmaschinen hierher finden, hier meine zeitlich etwas "aktuellere" Lösung (jQuery vorausgesetzt):
Code :1 2 3 4 5 6 7
$('a').bind('click', function(){ var link = this.href; $('#content').fadeOut(function () { //NUR EINE BEISPIELFUNKTION self.location = link; }) return false; });
Ähnliche Themen
-
Klick auf X bei JInternalFrame abfangen.
Von barsiq im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 8Letzter Beitrag: 22.01.08, 11:47 -
toggeln erst beim 2. klick - warum?
Von SnEaKy im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 13.07.07, 12:04 -
PHP als Link per Klick ausführen?
Von timkon im Forum PHPAntworten: 2Letzter Beitrag: 07.06.07, 21:28 -
JTable Tabellenzelle erst bei 2. Klick editierbar
Von Moltar im Forum JavaAntworten: 7Letzter Beitrag: 04.05.07, 14:46 -
Funktion erst nach gewisser Zeit ausführen lassen
Von arcanon im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 26.10.03, 18:58





Zitieren

Login




