Sascha M.: Sprung zum Seitenanfang nach Javascript-Aufruf

Hallo zusammen,

es ist zwar eher ein kleineres Problem, dafür aber umnso schlimmer.
Für Eure Hilfe möchte ich mich schonmal im Voraus bedanken.

Das Problem - Nach dem Aufruf eines Javascripts springt der Browser automatisch zum Seitenanfang. Was das Javascript macht, spielt dabei keinerlei Rolle. Auch der Return-Value scheint dieses Verhalten nicht zu beeinflussen.

Aufgerufen wird das Javscript über den Event-Handler "onclick" in einem Link. Das "href" Attribut hat dabei den Wert "#".

<a href="#" onclick="doSth();">doSth.</a>

Ich habe etliche Variationen ausprobiert, ob mit oder ohne Return-Value oder oder oder...

Das Dokument ist als "XHTML 1.0 Strict" deklariert und wird vom W3C Validator als valides Dokument erkannt.

Sollte jemand einen Rat wissen, wäre ich für eine kurze Erklärung sehr dankbar!

Gruß,
Sascha

  1. Hallihallo,

    Das Problem - Nach dem Aufruf eines Javascripts springt der Browser automatisch zum Seitenanfang.

    Falsch. Nach deinen weiteren Ausführungen solltest du sagen: "Nach dem Anklicken eines Links".

    Aufgerufen wird das Javscript über den Event-Handler "onclick" in einem Link. Das "href" Attribut hat dabei den Wert "#".
    <a href="#" onclick="doSth();">doSth.</a>

    Ja, ist doch klar: Da ist ein Link, das Verweisziel ist "#", also ein Anker auf der aktuellen Seite. Da der Name der Ankers fehlt, springen die meisten Browser ersatzweise zum Seitenanfang. Das ist zunächst mal die Grundfunktion des Links.
    Zusätzlich wird über den onclick-Handler noch eine JS-Funktion aufgerufen.

    Auch der Return-Value scheint dieses Verhalten nicht zu beeinflussen.

    Das sollte so nicht sein. Sobald dein Javascript false oder 0 zurückgibt, sollte der Link nicht weiter bearbeitet werden.

    Ich habe etliche Variationen ausprobiert, ob mit oder ohne Return-Value oder oder oder...

    Mit welchen Browsern, mit welchen return values?

    Das Dokument ist als "XHTML 1.0 Strict" deklariert und wird vom W3C Validator als valides Dokument erkannt.

    Das ist lobenswert, aber für das Problem nicht unbedingt entscheidend.

    So long,

    Martin

  2. hi,

    Aufgerufen wird das Javscript über den Event-Handler "onclick" in einem Link. Das "href" Attribut hat dabei den Wert "#".

    <a href="#" onclick="doSth();">doSth.</a>

    Warum nutzt du einen Link, wenn es kein wirkliches Linkziel gibt?
    Setze onClick auf einem anderen, passenderen Element ein.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi,

      Aufgerufen wird das Javscript über den Event-Handler "onclick" in einem Link. Das "href" Attribut hat dabei den Wert "#".
      <a href="#" onclick="doSth();">doSth.</a>

      Warum nutzt du einen Link, wenn es kein wirkliches Linkziel gibt?

      Weil ein gewisser Browser hover-Effekte per CSS sonst nicht mitmacht?
      (ok, kein wirkliches Argument, da das Teil eh nur mit aktivem Javascript funktioniert, so daß auch onmouseover/onmouseout genutzt werden kann statt :hover)

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. hi,

        Weil ein gewisser Browser hover-Effekte per CSS sonst nicht mitmacht?
        (ok, kein wirkliches Argument, da das Teil eh nur mit aktivem Javascript funktioniert, so daß auch onmouseover/onmouseout genutzt werden kann statt :hover)

        Ebend! (sic!)

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Hi!

        (ok, kein wirkliches Argument, da das Teil eh nur mit aktivem Javascript funktioniert, so daß auch onmouseover/onmouseout genutzt werden kann statt :hover)

        Dann kann es auch gleich noch per document.write eingefügt werden, so das JS-lose Besucher gar nciht dumm rumklicken und sich wundern, dass nix passiert...

        Gruß aus Iserlohn

        Martin