Почему браузер не выдает ошибку, если вместо слова "javascript" используется значение другого слова вместо значения onclick?
Я унаследовал веб-сайт и натолкнулся на это любопытство:
<a href="/delete" onClick="jamoscript:return confirm('Do you really want to do that?');">Delete all</a>
Я могу отобразить страницу, содержащую ее, и щелкнуть ссылку, чтобы получить диалоговое окно подтверждения точно так же, как и при изменении "jamoscript
" на "javascript
". Диагностика не отображается в консоли Firebug при загрузке страницы или при нажатии ссылки. Что эй? Googling для jamoscript не вызывает ничего интересного.
Может ли кто-нибудь объяснить это поведение?
Ответы
Ответ 1
Строковое значение атрибута onclick считается простым кодом JavaScript. JavaScript содержит положения для обозначенных операторов, поэтому код является выражением return
с меткой "jamoscript". Другими словами, это:
jamoscript: return confirm("Do you really want to hurt me?");
- совершенно законный JavaScript. Ярлыки не используются много, поэтому они незнакомы.
Единственный контекст, в котором префикс "javascript:" имеет значение, когда ожидается URL-адрес, как в случае с атрибутом "href" тегов <a>
.