Antje Hofmann: href="#" wird im Opera interpretiert

Beitrag lesen

Hallo Axel,

nun gebt doch mal nicht Opera die Schuld für eure Fehler. Ich mag den Browser zwar überhaupt nicht, für Programmierfehler kann er ja wirklich nichts.

Also: Für einen Link, der ein Javascript ausführen soll, wird oft folgende Lösung angeboten (auch hier im Forum):
<a href="#" onClick="jsfunction()">link</a>

Dieser Aufruf besagt nichts weiter als: Führe beim Klick die Funktion aus und dann den Verweis.

Während nun der IE und NC (meine zumindest - IE 5.0 und NC 4.7) erwartungsgemäß das href="#" ignorieren und nur jsfunction()

nein, die ignorieren den überhaupt nicht. Die handeln genauso wie Opera. Sie laden lediglich die Seite nicht neu. Ein Blick in die Adresszeile verrät dir auch bei diesem Browser, das er den Befehl ausgeführt hat.

Hier ein Beispiel, das das besonders schön verdeutlicht:
<a href="#" onClick="history.back()">back</a>
Klickt man in Opera auf den Link, wird kurz die Vorgängerseite dargestellt (back() wird ausgeführt), aber sofort danach die aufrufende Seite neu geladen.

Opera regiert hier völlig korrekt.

Im IE und NC funktioniert das als ganz normaler Zurück-Link.

Da ansich der obengenannter Aufruf Unsinn ist, erst zurück und dann wieder vor wirkt hier wohl eher diese internen Fehlerkorrekturen der Browser. Außerdem haben NN und IE da auch ein unterschiedliches Timingverhalten.

Offensichtlich sollte man also prinzipiell
<a href="javascript:jsfunction()">
verwenden.

nein, besser ist:

<a href="#" onClick="history.back();return false;">back</a>
                                    ^^^^^^^^^^^^^^

return false unterdrückt die Ausführung des Verweises. Und das kann sogar Opera.

Ein schönes Restwochenende wünscht Euch

ebenfalls

Gruß

Antje