Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

onClick vs. href=javascript:





Frage

Hi zusammen, ich knoble gerade an einem komischen Problem: Ich habe im Head einer Seite eine Javascript-Funktion definiert (es ist egal, ob ich das in einem script-Block im head mache oder eine externe Datei referenzierte, die die Funktionsdefinition enthält). Nenn wir sie mal meineFunktion(). So, es gibt ja nun prinzipiell 2 Möglichkeiten, so ne Funktion aufzurufen, wenn jemand wohin klickt, und zwar entweder: [code]<a href="#" onClick="meineFunktion()">Klick hier</a>[/code] oder: [code]<a href="javascript:meineFunktion()">Klick hier</a>[/code] Beides sind standardkonforme Varianten, außerdem ist die Seite transitional, die Browser parsen also sowieso im Quirks-Mode (hoffentlich... ;-) Das komische ist nun: Variante1 funktioniert, Variante2 funktioniert nicht, Netscape sagt mir hier: Die Funktion meineFunktion() ist nicht definiert, der IE sein standardmäßiges "Objekt nicht gefunden". Gibts ne Erklärung, warum? Und wie man das trotzdem mit der 2ten Variante lösen kann? Danke für Eure Hilfe!

Antwort 1 von Dr.Ma-Busen

Mahlzeit!

Ich kenne den Namen der Fumktion jetzt nicht, aber wascheinlich hast du ein ähnliches Problem wie hier damals.

MfG
Dr. Ma-Busen

Antwort 2 von Floooooo

Nee, leider nicht, ich kenne meinen Thread von damals ;-)

Um genau zu sein, die Funktion heißt openWindowRecommendation() - naja, die ist jedenfalls nirgendwo im Standard zu finden...

Bin am überlegen, ob die Variante mit javascript: wirklich standardkonform ist, ...

Antwort 3 von Friedel

Ich verwende beide Methoden und bei mir funktionieren beide im IE5, IE6, NN4, NN6, NN7, Opa5, Opa6, Opa7 und Moz1.

Antwort 4 von Floooooo

Mmmm... es wird interessanter:

Mit "Standardfunktionen" (also sowas wie print(), window.open() usw) funzt die javascript:-Variante.

Sehr nett, hab auch gerade festgestellt, dass javascript: nicht standardkonform ist...

Achja, am besten ich mach nix mehr mit Computern sondern werd Bäcker oder Gärtner ;-)

Antwort 5 von Friedel

Der Link mit "javascript:" ist in js1.0 enthalten und somit standardkonform. Siehe http://de.selfhtml.org/javascript/sprache/eventhandler.htm#ja.... Was verstehst du unter "Standardfunktionen"? Ich verwende das für beliebige Funktionen und bisher hat es immer bei allen Tests funktioniert. (Außer in Opa 3.6, aber da funktioniert JavaScript eh nur sehr eingeschränkt.)

Antwort 6 von starkheim

Probiers mal so:
<a href="javascript: document.meineFunktion()">Klick hier</a>
dann müßte es funktionieren.
Ist ja eigentlich auch Logisch.
mfg
Starkheim

Antwort 7 von katy

@Starkheim:
Der Beitrag ist 5 Jahre alt, wahrscheinlich istd as Problem indessen gelöst oder bedeutungslos geworden ;-)

Nichtsdestotrotz möchte ich deine Behauptung mit document hier nicht so stehen lassen.

In JavaScript werden alle Objekte, die nicht im Kontext anderer Objekte stehen, im window-Objekt angelegt. Dazu gehören alle globalen Variablen und Funktionen. Statt meineFunktion() kannst du also allenfalls window.meineFunktion() nutzen oder statt window eine andere Referenz auf das entsprechende Fenster.

katy

Antwort 8 von TByte

Hallo

versuchs doch mit span:
<span onclick="meineFunktion();">KLICK</span>

Muss da eh nich noch ein semikolon ran, wenn man onClick benutzt?

mfg
TByte

Antwort 9 von katy

@TByte: Nein!

Antwort 10 von TByte

nein zu span oder nein zu semikolon?

mfg
TByte

Antwort 11 von Supermax

Das Semikolon am Ende ist nicht erforderlich; ich habe es mir allerdings auch angewöhnt, an dieser Stelle ein Semikolon zu setzen - syntaktisch erlaubt ist es ja jedenfalls.

Antwort 12 von TByte

joa, da beugt man fehlern vor

mfg
TByte