Подтвердить что ты не робот

Почему браузер не выдает ошибку, если вместо слова "javascript" используется значение другого слова вместо значения onclick?

Я унаследовал веб-сайт и натолкнулся на это любопытство:

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

Я могу отобразить страницу, содержащую ее, и щелкнуть ссылку, чтобы получить диалоговое окно подтверждения точно так же, как и при изменении "jamoscript" на "javascript". Диагностика не отображается в консоли Firebug при загрузке страницы или при нажатии ссылки. Что эй? Googling для jamoscript не вызывает ничего интересного.

Может ли кто-нибудь объяснить это поведение?

4b9b3361

Ответ 1

Строковое значение атрибута onclick считается простым кодом JavaScript. JavaScript содержит положения для обозначенных операторов, поэтому код является выражением return с меткой "jamoscript". Другими словами, это:

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

- совершенно законный JavaScript. Ярлыки не используются много, поэтому они незнакомы.

Единственный контекст, в котором префикс "javascript:" имеет значение, когда ожидается URL-адрес, как в случае с атрибутом "href" тегов <a>.