Eddie: Per JS die Ausführung eines Klicks verhindern?

Hallo,

ist es irgendwie möglich, mit JavaScript die Ausführung eines Links zu unterdrücken?
Ich kann ja schießlich alles Moegliche mit Mausklicks machen, Annulieren auch?

<a href="goto.htm" ONCLICK="javascript:dont_do_that()">leave</a>

Problem: falls JS nicht aktiviert ist, soll der Link trotzdem funktionieren.
Ich brauch das, um den Nutzer vor Datenverlust zu bewahren, also nicht, um ihn zu nerven :-)

Eddie

  1. Hi Eddie,

    Problem: falls JS nicht aktiviert ist, soll der Link trotzdem funktionieren.

    <a href="goto.htm" onclick="dont_do_that();return false">bla</a>
                                               ^^^^^^^^^^^^

    Grüße,
     Roland

    --
    http://www.fu2k.org/alex/css/layouts/3Col_OrderedAbsolute.mhtml
    http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
    ss:| zu:} ls:} fo:} de:> va:} ch:| sh:) n4:& rl:| br:< js:{ ie:{ fl:{ mo:|
    1. <a href="goto.htm" onclick="dont_do_that();return false">bla</a>

      Wie cool!!! Und so einfach!
      Frage ich mich allerdings, unter welchem Stichwort ich das in Selfhtml haette finden sollen, das ist mir naemlich nicht gelungen :-(

      Also danke,
      Eddie

      1. Moin Moin !

        Wie cool!!! Und so einfach!
        Frage ich mich allerdings, unter welchem Stichwort ich das in Selfhtml haette finden sollen, das ist mir naemlich nicht gelungen :-(

        Du hättest es ja auch mal mit dem Archiv versuchen können. ;-)

        Eine Andeutung gibt es in http://selfhtml.teamone.de/javascript/sprache/eventhandler.htm#onsubmit: "An den aufrufenden Event-Handler onSubmit wird der Wert false zurückgegeben. Nur wenn alle Formularfelder ausgefüllt wurden, wird true zurückgegeben. Dadurch wird entschieden, ob das Formular abgeschickt wird oder nicht." Eine weitere Andeutung gibt es in http://selfhtml.teamone.de/javascript/beispiele/formulareingaben.htm.

        Zugegeben, für onClick habe ich ohne maschinelle Suche auch keinen entsprechenden Hinweis gefunden.

        Alexander

        --
        Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
      2. <a href="goto.htm" onclick="dont_do_that();return false">bla</a>

        Nur zum Verstaendnis: das "return false" ist die Rueckgabe der aktuellen JS-Prozedur, oder?
        Nur, rein logisch: welche Komponente ist dann dafuer zustaendig, dass danach nix mehr getan wird (sprich: der Link angesteuert wird)?

        Eddie

        1. Moin Moin !

          <a href="goto.htm" onclick="dont_do_that();return false">bla</a>

          Nur zum Verstaendnis: das "return false" ist die Rueckgabe der aktuellen JS-Prozedur, oder?
          Nur, rein logisch: welche Komponente ist dann dafuer zustaendig, dass danach nix mehr getan wird (sprich: der Link angesteuert wird)?

          Der Wert des Onclick-Attributs ist quasi eine unbenannte Javascript-Funktion, die der Browser aufruft, sobald geklickt wurde. Nur wenn diese Funktion false zurückgibt (und nicht etwa etwas Undefiniertes), bricht der Browser die Behandlung des Events dort ab. Ansonsten kommt der nächste Event-Handler dran, der ist in der Regel im Browser eingebaut und lädt goto.htm.

          In Pseudo-Code:

          function HandleMouseClick(item)
          {
            if (item.hasOnClickEventHandler()) {
               if (item.onClick(item)===false) return;
            }
            item.BuildInOnClick(item);
          }

          function Link_BuildInOnClick(item)
          {
            window.location.href=item.href;
          }

          In echtem Code kannst Du das z.B. bei www.mozilla.org bewundern. ;-)

          Alexander

          --
          Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
          Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
  2. Hi,

    ist es irgendwie möglich, mit JavaScript die Ausführung eines Links zu unterdrücken?
    Ich kann ja schießlich alles Moegliche mit Mausklicks machen, Annulieren auch?
    Problem: falls JS nicht aktiviert ist, soll der Link trotzdem funktionieren.

    Dann setz den Link doch einfach in einen noscript Bereich.
    Falls Javascript aktiviert ist, ist der Link dann einfach nicht sichtbar.

    (natürlich muß sich vorher im Quelltext ein script-Element befinden - aber wenn das nicht vorhanden wäre, bestünde hier ja wohl das Problem nicht...)

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
  3. Danke erstmal den bisherigen Helfern, hat prinzipiell perfekt funktioniert. Stellt sich mir nur die Frage, ob das nicht einfacher geht, nämlich mit einer Einstellung für die gesamte Seite?

    Das hatte ich mir ungefähr so vorgestellt, geht aber nicht:
    <body onunload="javascript:return false;">

    Was mache ich falsch?

    Eddie

    1. Hi,

      Das hatte ich mir ungefähr so vorgestellt, geht aber nicht:
      <body onunload="javascript:return false;">

      Was mache ich falsch?

      1. "javascript:" hat noch immer nichts in eventhandler-Attributen verloren

      2. Du hast nicht verstanden, was onunload bedeutet. onunload wird aufgerufen, wenn die Seite verlassen wird. Das hat nichts mit dem Anklicken von Links direkt zu tun - deren Eventhandler werden vorher ausgeführt. Außerdem wird bei "onunload" das "return false;" üblicherweise ignoriert - wäre ja noch schöner, was meinst Du, wie viele Webseiten man sonst bei aktivem Javascript nicht mehr verlassen könnte...

      cu,
      Andreas

      --
      Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
      http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/