Oliver Zubrod: Frage zu void(0)

Guten Morgen liebe self-Gemeinde.

Im Verlauf eines älteren - leider bereits verschwundenen - Threads habe ich mal nach dem JavaScript-Operator void(0) gefragt.

Calocybe hat daraufhin diesen Link gepostet:
[http://developer.netscape.com/docs/manuals/js/client/jsguide/expr.htm#1012081]
(Danke nochmal)

Auf dieser Seite steht u.a.:
The following code creates a hypertext link that submits a form when the user clicks it.

<A HREF="javascript:void(document.form.submit())">Click here to submit</A>

Leider gibt es dazu keine weitere Erklärung und deshalb wollte ich einfach mal nachfragen, was der Unterschied zu <A HREF="javascript:document.form.submit()">Click here to submit</A> ist.

Wo liegen die Vorteile, bzw. die Nachteile?
Welche Methode sollte man verwenden? Und warum?

Danke für euere Antworten.

Grüße aus Nürnberg,
olli

  1. Hallo,

    <A HREF="javascript:void(document.form.submit())">Click here to submit</A>

    [...] Unterschied zu <A HREF="javascript:document.form.submit()">Click here to submit</A> ist.

    Der Link funktioniert in beiden Fällen nur bei aktiviertem JavaScript. Im ersten fall wird er auch durch JavaScript erzeugt. Dadurch wird auch nur bei aktiviertem JavaScript angezeigt. Er wird also nur angezeigt, wenn er auch wirklich funktioniert.
    Der zweite Link wird auch bei deaktiviertem JavaScript angezeigt, obwohl er dann gar nicht funktioniert.

    Wo liegen die Vorteile, bzw. die Nachteile?

    Der Nachteil liegt darin, dass beide Möglichkeiten nicht-JavaScript-Besucher "rausschmeißen".

    Welche Methode sollte man verwenden?

    Diese:
      <INPUT type=submit value="Click here to submit">
    oder diese:
      <INPUT type=image src="absend.gif">

    Und warum?

    Weil beide auch bei deaktiviertem JavaScript funktionieren.

    Robert

    1. Nochmals hallo.

      <A HREF="javascript:void(document.form.submit())">Click here to submit</A>

      [...] Unterschied zu <A HREF="javascript:document.form.submit()">Click here to submit</A> ist.

      Der Link funktioniert in beiden Fällen nur bei aktiviertem JavaScript. Im ersten fall wird er auch durch JavaScript erzeugt. Dadurch wird auch nur bei aktiviertem JavaScript angezeigt. Er wird also nur angezeigt, wenn er auch wirklich funktioniert.

      Sorry, aber das ist Quatsch! Probier's doch mal aus.
      <a href ist stinknormales HTML und wird _immer_ angezeigt.

      Der zweite Link wird auch bei deaktiviertem JavaScript angezeigt, obwohl er dann gar nicht funktioniert.

      Wie gesagt: _Beide_ Links werden _immer_ angezeigt, auch wenn JS deaktiviert ist.

      Wo liegen die Vorteile, bzw. die Nachteile?

      Der Nachteil liegt darin, dass beide Möglichkeiten nicht-JavaScript-Besucher "rausschmeißen".

      Das ist mir absolut bekannt - mir ging es ja auch mehr um die Theorie.

      Welche Methode sollte man verwenden?

      Diese:
        <INPUT type=submit value="Click here to submit">
      oder diese:
        <INPUT type=image src="absend.gif">

      Und warum?

      Weil beide auch bei deaktiviertem JavaScript funktionieren.

      Wie gesagt: Mir ist die Problematik von JS bekannt, meine Frage war aber auch ganz eine andere...

      Gruß,
      olli

      1. Hallo,

        <A HREF="javascript:void(document.form.submit())">Click here to submit</A>
        [...] Unterschied zu <A HREF="javascript:document.form.submit()">Click here to submit</A> ist.

        Der Link funktioniert in beiden Fällen nur bei aktiviertem JavaScript. Im ersten fall wird er auch durch JavaScript erzeugt. Dadurch wird auch nur bei aktiviertem JavaScript angezeigt. Er wird also nur angezeigt, wenn er auch wirklich funktioniert.

        Sorry, aber das ist Quatsch! Probier's doch mal aus.
        <a href ist stinknormales HTML und wird _immer_ angezeigt.

        Ja, stimmt, da hab ich Schmarrn geschrieben. Weiß auch nicht, wie ich darauf gekommen bin ;-)

        Robert

  2. Hi Oli!

    Leider gibt es dazu keine weitere Erklärung und deshalb wollte ich einfach mal nachfragen, was der Unterschied zu <A HREF="javascript:document.form.submit()">Click here to submit</A> ist.

    Mmh... hatte ich den Link letztens nicht mit gebracht? In </selfhtml/sfarchiv/1999_3/t06577.htm> hatte ich das mal ausfuehrlich beschrieben. Kurz gesagt wird das, was der JavaScript-Code als Returnwert zurueckgibt, als neue Dokument in das Fenster geschrieben, es sei denn, dieser Returnwert ist undefined (dann passiert nichts). Bei <A HREF="javascript:window.open(...  wird deshalb "[object window]" ins aufrufende Fenster geschrieben (und das alte Dokument geloescht). Dies ist normalerweise unerwuenscht, man verhindert es deshalb mit void(). So gibt man undefined zurueck und nicht das erzeugte window-Objekt. Im Falle von Form.submit() ist das aber IMHO ueberfluessig, da diese Methode sowieso keinen Rueckgabewert hat. Naja, doppelt haelt besser ueber die vielen Browserversionen.

    So long

    1. Hallo Calocybe.

      Du hast schon recht:
      der Link war neulich auch schon dabei.
      Ich hätte ihn vielleicht nicht nur kurz überfliegen sollen (sorry!)...
      Das ausführliche Lesen werde ich sofort nachholen - versprochen!
      Ich hatte mich halt verstärkt auf den anderen Link gestürzt...
      Deine Kurzerklärung hat mir aber schon sehr weitergeholfen.
      Vielen Dank dafür.

      Grüße aus Nürnberg,
      olli

      1. Hallo Zusammen

        Den Effekt erziehlt man auch, wenn man false im click-handler zurückgibt:
        <a href="http://bla.com/" onClick="open('http://bla.com'); return false">text</a>
        hat 1. den Vorteil, dass man zur Laufzeit entscheiden kann, ob man true oder false zurückgeben will und 2., dass im Falle von ausgeschaltetem JavaScript der Link immer noch funktioniert

        Gruß

        Daniel