1. ホーム
  2. javascript

[解決済み] onclickの値に'javascript'の代わりに他の単語が使われても、ブラウザはなぜエラーを投げないのですか?

2022-12-12 07:04:36

質問

ホームページを受け継いだのですが、こんな不思議なことに遭遇しました。

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

これを含むページを表示し、リンクをクリックすると、"を変更したときと全く同じように確認ダイアログボックスが表示されますね。 jamoscript "を" javascript "に変更しました。Firebugのコンソールでは、ページの読み込み時、リンクのクリック時ともに診断結果が表示されません。なんじゃこりゃ?jamoscriptでググっても面白いものは出てきません。

どなたかこの動作を説明していただけませんか?

どのように解決するのですか?

onclick"属性の文字列値は、単純なJavaScriptコードとみなされます。JavaScript には ラベル付きステートメント があるので、そのコードは return ステートメントに "jamoscript" というラベルを付けています。つまり、これです。

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

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

の "href" 属性のように、URL が期待される場合のみ、接頭辞 "javascript:" が重要な意味を持つ文脈となります。 <a> タグの "href" 属性のようにです。