Per JS die Ausführung eines Klicks verhindern?
Eddie
- javascript
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
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
<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
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
<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
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
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
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
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