Некоторые из ответов здесь утверждают, что префикс «javascript:» является «пережитком старых дней», подразумевая, что он намеренно, специально обрабатывается браузерами для обратной совместимости. Есть ли веские доказательства того, что это так (кто-нибудь проверял исходный код)?
<span onclick="javascript:alert(42)">Test</span>
Для меня это просто читается как:
javascript:
alert(42);
Это означает, что «javascript:» - это просто ярлык и не имеет никакого эффекта. Это тоже работает:
<span onclick="foobar:alert(42)">Test</span>
Обновление:
Я провел небольшой эксперимент, и оказалось, что да, "javascript:" обрабатывается специально для IE, но определенно не для Firefox, Safari, Opera или Chrome:
<span onclick="javascript:while (true) { alert('once'); break javascript; }">Test</span>
В не-IE это просто предупредит «один раз», один раз, а затем выйдет из цикла. В IE я получаю сообщение об ошибке «Ярлык не найден». Во всех браузерах отлично работает следующее:
<span onclick="foo:while (true) { alert('once'); break foo; }">Test</span>
Обновление 2:
Я только что понял ссылку http://crisp.tweakblogs.net/blog/the-useless-javascript-pseudo-protocol.html в одном из приведенных выше ответов в значительной степени говорит об одном и том же.
person
Ates Goral
schedule
16.12.2008