Link verhindern aber onClick-Weiterleitung ausführen
Knight
- javascript
Guten Tag,
tut mir leid, dass ich euch schon wieder belästigen muss ;-) Es geht um folgendes. Ich habe einen Link der folgendermaßen aussieht:
<a href="index.php" onclick="hideSite(this.href); return false;">Mein Beispiellink</a>
Wie ihr seht, ist es ein einfacher Link, in dem eine Zieladresse und eine JS Funktion angegeben ist, die die Seite ausblendet (Fadeout) und danach mittels window.location.href = url;
die Seite weiterleiten SOLL. Damit der Auslbendeeffekt nicht unterbrochen wird, habe ich hinter die Funktion im onClick-Attribute ein "return false;" gesetzt. Das Ausblenden klappt, der eigentliche Link wird nicht ausgeführt und die Weiterleitung klappt... nicht! Ich habe das ganze auch schon mit einigen anderen Kombinationen ausprobiert. Beispielsweise auch "return hideSite(this.href);" und dann in der Funktion am Ende "return false;". Hatte natürlich die gleiche Wirkung. Gibt es eine Möglichkeit die Weiterleitung durch hideSite();
noch ausführen zu lassen?
Grüße
Wie ihr seht, ist es ein einfacher Link, in dem eine Zieladresse und eine JS Funktion angegeben ist, die die Seite ausblendet (Fadeout) und danach mittels
window.location.href = url;
die Seite weiterleiten SOLL. Damit der Auslbendeeffekt nicht unterbrochen wird, habe ich hinter die Funktion im onClick-Attribute ein "return false;" gesetzt. Das Ausblenden klappt, der eigentliche Link wird nicht ausgeführt und die Weiterleitung klappt... nicht!
Was heißt klappt nicht?
warum ausprobieren? Du kannst doch in JS einfach Fehler analysieren.
Such als erstes die Fehlermeldungen.
Struppi.
Was heißt klappt nicht?
warum ausprobieren? Du kannst doch in JS einfach Fehler analysieren.
Such als erstes die Fehlermeldungen.
Okay, ich formuliere es nocheinmal um, in den Fehlermeldungen habe ich bereits geschaut. Dort ist nichts. Ich habe folgenen Link:
<a href="index.php" onclick="hideSite('index.php'); return false;">Mein Beispiellink</a>
In meiner Javascript Funktion siehts ungefähr so aus:
function hideSite(url) {
$('#mainsite').fadeOut(900); // Ausblenden innerhalb von 900 Millisekunden
switch(url) {
case 'index.php': window.setTimeout('goToUrl("index.php")', 1000); break;
// hier sind noch weitere "cases" drinnen ;)
}
}
function goToUrl(url) {
window.location.href = url; // wird leider NICHT ausgeführt
}
Was soll passieren:
Beim Klick auf den Link soll die Seite mittels der Funktion hideSite(url);
ausgeblendet werden, dannach soll durch diese Funktion die Funktion goToUrl(url);
aufgerufen, die die aktuelle Adresse ändern soll. Bitte fragt nicht, warum die Funktionen so verschachtelt sind und ich ein "switch()" verwendet habe, das hat andere Gründe ;)
Was passiert:
Die Seite wird nach Vorschrift ausgeblendet und auch die sofortige "Weiterleitung", die normalerweise bei einem Links passiert, wird durch "return false" verhindert. Ich weiß nicht, ob es noch am return false; liegt, aber dann wird auch die Weiterleitung von goToUrl(url)
nicht ausgeführt.
Was mache ich falsch?
Grüße, Knight
Alles zurück auf null, der Fehler lag bei mir. Danke trotzdem für die Antworten. Ich weiß, dass JavaScript als "Effektscript" zu nutzen unsauber und nicht zu empfehlen ist, da hier viel schiefgehen kann. Aber so lautet meine Aufgabe, und was solls?
Grüße, Knight
In meiner Javascript Funktion siehts ungefähr so aus:
Dann gibt es keine andere Erklärung, dass es doch eine Fehlermeldung geben muss, denn der Code sollte so funktionierten.
Übrigens die Funktion fadeOut hat einen Parameter "callback" mit dem du genau das machen kannst, was du jetzt umständlich selbst zusammenbastelst.
Struppi.
Gibt es eine Möglichkeit die Weiterleitung durch
hideSite();
noch ausführen zu lassen?
Ja, mit window.location.href= surf_this;
Dein Effekt kommt mir aber sehr fragwürdig vor -> NoJS Kandidat.
mfg Beat
Hallo,
habe den Thread interessiert gelesen und mich dann folgendes gefragt:
Kann ich mit Links in folgender Form erreichen, dass wenn kein JavaScript aktiviert ist, also wenn kein Ajax unterstützt wird, dass dann dem normalen Link gefolgt wird.
<a href="index.php" onclick="ajaxianContentChange(this.href); return false;">Mein Beispiellink</a>
Sprich wenn ich mit deaktiviertem JavaScript auf den Link klicke, wird /index.php geladen.
Wenn ich mit aktiviertem JavScript auf den Link klicke, wird ajaxianContentChange() ausgeführt, was per Ajax den Inhalt der index-Seite in den Content-Bereich läd.
Also wird, wenn unterstützt, der Content-Block per Ajax ohne neuladen der Seite geändert, wenn nicht wird die index.php komplett neu geladen indem dem Link gefolgt wird?
greets
Kann ich mit Links in folgender Form erreichen, dass wenn kein JavaScript aktiviert ist, also wenn kein Ajax unterstützt wird, dass dann dem normalen Link gefolgt wird.
<a href="index.php" onclick="ajaxianContentChange(this.href); return false;">Mein Beispiellink</a>
Ja.
Struppi.