Warum geben Browser keinen Fehler aus, wenn anstelle von 'Javascript' ein anderes Wort als Wert für onclick verwendet wird?

100

Ich habe eine Website geerbt und bin gerade auf diese Neugier gestoßen:

<a href="/delete"  onClick="jamoscript:return confirm('Do you really want to do that?');">Delete all</a>

Ich kann die Seite anzeigen, die sie enthält, und auf den Link klicken, um das Bestätigungsdialogfeld genau so zu erhalten, wie ich es tue, wenn ich " jamoscript" in " javascript" ändere . In der Firebug-Konsole werden keine Diagnosen angezeigt, weder beim Laden der Seite noch beim Klicken auf den Link. Was zum Teufel? Das Googeln nach Jamoscript bringt nichts Interessantes hervor.

Kann jemand dieses Verhalten erklären?

Rußschuh
quelle

Antworten:

144

Der Zeichenfolgenwert eines "onclick" -Attributs wird als einfacher JavaScript-Code angesehen. JavaScript enthält Bestimmungen für beschriftete Anweisungen , sodass Code eine returnAnweisung mit der Bezeichnung "jamoscript" ist. Mit anderen Worten:

jamoscript: return confirm("Do you really want to hurt me?");

ist vollkommen legales JavaScript. Etiketten werden nicht viel verwendet, daher sind sie unbekannt.

Der einzige Kontext, in dem das Präfix "javascript:" von Bedeutung ist, ist, wenn eine URL erwartet wird, wie dies beim Attribut "href" von <a>Tags der Fall ist .

Spitze
quelle
53
Diese Frage lässt mich wirklich wünschen, dass die Sprache "JamoScript" heißt.
Pointy
5
Dies erinnert mich an das berühmte Problem, was Folgendes bewirkt : function foo(a) { x: 2 }.
80
Ich habe hier ein Konto erstellt, um Ihnen zu sagen, dass diese Codezeile (? -Ich bin kein Programmierer) ohne Zweifel von einem Griechen geschrieben wurde oder zumindest "Jamoscirpt" von einem Griechen vorgeschlagen wurde. "Jamo" ist, wie man versuchen würde, die Laute der englischen Buchstaben zu verwenden, um den Klang zu erzeugen, den das Wort "fing" in der griechischen Sprache hat. Wenn Sie also versuchen, "Jamoscript" vorzulesen, versteht eine griechische Person, die das Wort "Script" kennt, "Fing Script". Der beabsichtigte Effekt wäre sicherer, wenn anstelle von "j" der Buchstabe "g" verwendet würde, aber ich denke, es gab das beabsichtigte Spiel mit "j-ava".
Alecos Papadopoulos
6
@AlecosPapadopoulos wow das ist super. Wenn überhaupt, möchte ich noch mehr, dass die Sprache tatsächlich "JamoScript" heißt :)
Pointy
6
@asawyer Ich schätze die Info (+1), aber bitte versuchen Sie mich nicht, meine sanfte Online-Persönlichkeit zu verlieren und zu meiner echten zurückzukehren ...
Alecos Papadopoulos