Mike: onClick="return false;" wird ignoriert

Hi!

Mir ist was ganz seltsames aufgefallen:

In meiner seite habe ich mehrere Link-Gifs die ich mit onClick überwache:

<a href="" onClick="neu(); return false;"><img src="test.gif"></a>

Einige Gifs öffnen ein anderes Fenster, einige nicht. Klickt man nun hintereinander auf Gifs die Fenster öffnen, wird der Link ausgeführt!

???

Mike

  1. Hi,

    In meiner seite habe ich mehrere Link-Gifs die ich mit onClick überwache:

    <a href="" onClick="neu(); return false;"><img src="test.gif"></a>

    Einige Gifs öffnen ein anderes Fenster, einige nicht. Klickt man nun hintereinander auf Gifs die Fenster öffnen, wird der Link ausgeführt!

    ich verstehe die Fehlerbeschreibung zwar nicht so ganz, aber ein leeres href kann schon zu Problemen führen. Versuche also <a href="#" ...> stattdessen.

    Cheatah

  2. hi mike....

    <a href="" onClick="neu(); return false;"><img src="test.gif"></a>

    da das "return false;"
    nur dafür da ist, in einer funktion einen wert zurückzuliefern, kannst du dir es im onClick sparen, weil du dich nicht in einer funktoin befindest...

    ich schreib mal ein kleines beispiel:

    function always_false ()
    {
        return false;
    }

    if (always_false () == true)
    {
        alert ("Dieser Text wird nie angezeigt");
    }

    ----
    vielleicht hab ich beim if ein bisschen was falsch gemacht, ich programmier halt im mom nicht so viel javascript...

    bis demnächst

    der gero..

    1. <a href="" onClick="neu(); return false;"><img src="test.gif"></a>

      da das "return false;"
      nur dafür da ist, in einer funktion einen wert zurückzuliefern, kannst du dir es im onClick sparen, weil du dich nicht in einer funktoin befindest...

      Das ist definitiv falsch. return false sorgt dafür, daß der Link nicht ausgeführt wird. Wird es weggelassen, führt der Browser den Link aus.

      Viele Grüße

      Antje

      1. Hi Antje..

        hmm.. pardon für die falsche info, ich habe es gleich ausprobiert und gemerkt, dass es mit return false dem link tatsächlich nicht folgt... allerdings hab ich keine ahnung warum..?
        aus anderen Programmiersprachen (C und Java) kenn ich das return wirklich NUR zum zurücksenden eines Wertes der Funktion..

        unter javascript funktioniert das soweit auch, glaub ich zumindest.

        wäre schön, wenn du mir erklären könntest, _warum_ der link mit einem return false nicht genutzt wird..?
        ich habe bis jetzt auch cheatah's methode (<a href="#">) benutzt...
        danke im voraus

        der gero..

        1. Hi Gero,

          wäre schön, wenn du mir erklären könntest, _warum_ der link mit einem return false nicht genutzt wird..?
          ich habe bis jetzt auch cheatah's methode (<a href="#">) benutzt...
          danke im voraus

          der gero..

          Ich habe mal rasch nachgelesen.

          return: dient zur Rückgabe eines Wertes aus Funktionen und Event-Handler, in Event-Handler ist dies gelegentlich nötig um eine Aktion auszulösen oder zu verhindern

          onClick ist ein Event-Handler, der beim Anklicken eines Elementes eine Aktion ausführt. Innerhalb eines Links erhält der Browser damit zwei Anweisungen. Eine von onClick und eine vom href="..".
          Zuerst erledigt er was in onClick steckt und anschließend was im Link selbst ist.
          Seit dem Navi3, IE4 interpretieren die Browser return false in Verbindung mit onClick im Link als eine Abbruchanweisung zur Ausführung des Links.

          Quelle: Stefan Mintert, JavaScript 1.2

          Viele Grüße

          Antje

      2. Hi Antje!

        Das ist definitiv falsch. return false sorgt dafür, daß der Link nicht ausgeführt wird. Wird es weggelassen, führt der Browser den Link aus.

        Das aber ist genau mein Problem, daß der Link beim ersten mal nicht ausgeführt wird, dafür aber onClick.
        Beim jedem weiteren Click wird der Link ausgeführt, nicht aber die onClick-Anweisung.
        Mit onClick wird eine Funktion aufgerufen die ein neues Fenster öffnet.
        Bei einer Zeile mit dem selben Syntax, die aber mit obClick eine andere Funktion aufruft, funktioniert alles wunderbar!

        Mike

        1. Das aber ist genau mein Problem, daß der Link beim ersten mal nicht ausgeführt wird, dafür aber onClick.
          Beim jedem weiteren Click wird der Link ausgeführt, nicht aber die onClick-Anweisung.
          Mit onClick wird eine Funktion aufgerufen die ein neues Fenster öffnet.
          Bei einer Zeile mit dem selben Syntax, die aber mit obClick eine andere Funktion aufruft, funktioniert alles wunderbar!

          Mike

          Kannst du nicht mal die Funktion und zwei der Aufrufe posten?
          Sonst kann man schwer was dazu sagen.

          Antje

          1. Kannst du nicht mal die Funktion und zwei der Aufrufe posten?
            Sonst kann man schwer was dazu sagen.

            Hi Antje!

            Klar kann ich. Hier sind zwei Funktionen, holen() kann ich so oft ausführen wie ich will, neu() aber nur einmal.

            function neu(typ)
            {
            neu = open("neu.cfm?typ="+typ,"neu","width=650,height=500,screenX=20,screenY=10,dependent=yes,hotkeys=no,resizable=yes");
            neu.focus()
            }
            function holen()
            {
            parent.accounts.document.accounts.submit();
            }

            Hier ist der Aufruf:

            <a href="#" onClick="neu(0); return false;"><img src="gifs/mailnew.gif" width=78 height=42 alt="Neue Nachricht" border="0"></a>
            <a href="#" onClick="drucken(); return false;"><img src="gifs/drucker.gif" width=60 height=42 alt="Nachricht drucken" border="0"></a>

            Netscape 4.5 meldet folgenden Fehler:

            JavaScript Error: neu is not a function

            Danke,
            Mike

            1. function neu(typ)

              »»  {
              »»  neu = open("neu.cfm?typ="+typ,"neu","width=650,height=500,screenX=20,screenY=10,dependent=yes,hotkeys=no,resizable=yes");
              »»  neu.focus()
              »»  }

              function holen()

              »»  {
              »»  parent.accounts.document.accounts.submit();
              »»  }

              jetzt auf die Schnelle fällt mir folgendes auf, neu als Funktionsname, als Variablenname und als Fenstername
              Ich könnte mir vorstellen, daß das Probleme macht und dieses Verhalten hervorruft.
              Teste mal ob es daran liegt.

              Viele Grüße
              Antje