onclickの値で「javascript」の代わりに他の単語が使用されている場合、ブラウザがエラーをスローしないのはなぜですか?


100

私はウェブサイトを継承し、この好奇心に出会いました。

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

jamoscript」を「javascript」に変更する場合とまったく同じように、それを含むページを表示してリンクをクリックすると、確認ダイアログボックスが表示されます。ページがロードされたとき、またはリンクがクリックされたときに、Firebugコンソールに診断が表示されません。なに?jamoscriptをグーグルしても、興味深いことは何もありません。

誰かがこの動作を説明できますか?

回答:


144

「onclick」属性の文字列値は、単純なJavaScriptコードと見なされます。JavaScriptにはラベル付きステートメントの規定が含まれているため、コードはreturn「jamoscript」というラベルのステートメントです。つまり、これは:

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

JavaScriptは完全に合法です。ラベルはあまり使われていないので、なじみがありません。

<a>タグの「href」属性の場合のように、「javascript:」接頭辞が関係する唯一のコンテキストは、URLが予期される場合です。


53
この質問は、言語が「JamoScript」と呼ばれていたことを本当に望んでいます。
ポインティ2014

5
これは、次のことの有名な問題を思い出させますfunction foo(a) { x: 2 }

80
私はここにアカウントを作成しました。このコード行(?-私はプログラマではありません)がギリシャ語で書かれたことは間違いありません。少なくともギリシャ語で「jamoscirpt」が提案されました。"Jamo"は、英語の文字の音を使用して、ギリシャ語で "f --- ing"という単語が持つ音を生成しようとする方法です。したがって、「jamoscript」を声に出して読み込もうとすると、「script」という単語を知っているギリシャ人は「f --- ing script」を理解します。「j」の代わりに「g」という文字が使用された場合、意図された効果はより確実になりますが、「j-ava」で意図された遊びがあったと思います。
Alecos Papadopoulos 2014

6
@AlecosPapadopoulosすごいですね。どちらかといえば、言語が実際に「JamoScript」と呼ばれていたことを私はさらに願っています :)
Pointy

6
@asawyer私は情報に感謝します(+1)が、私の柔和なオンラインペルソナを流し、実際のペルソナに戻そうとしないでください...
Alecos Papadopoulos
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.