У меня создалось впечатление, что я только должен определить "протокол" при использовании JavaScript в атрибутах URL, такой как в hrefs. Это единственный "полезный" контекст для javascript:
?
Разумный:
<a href="javascript:alert('Hello')">World!</a>
Глупый:
<form onsubmit="javascript:alert('oops!')">
Действительно ли это правильно? Или есть ли некоторая неясная ошибка/вариант использования, о которой я должен знать?
Псевдопротокол javascript:
в обработчиках событий будет только проигнорирован, он вам не нужен, механизм JavaScript интерпретирует javascript:
как Заявление метки .
Метка просто предоставляет идентификатор для оператора и позволяет вам ссылаться на него в другом месте вашей программы.
ИМХО, этот псевдопротокол полезен только для букмарклетов ...
Рекомендуемая статья:
Как уже упоминалось в других ответах, избегайте использования ссылок javascript:
href, и это совершенно не нужно в атрибутах обработчика событий.Однако, поскольку теги A
иногда остаются семантически правильными, вам нужно будет что-то добавить в атрибут href
, если вы хотите, чтобы ваши : ссылка
и : hover
Стили CSS, применяемые к элементу в Internet Explorer. В этом случае используйте:
<a href="#" onclick="doSomething(); return false;">Link</a>
или
<a href="javascript://" onclick="doSomething();">Link</a>
Есть одна (несколько неясная) ошибка с протоколом javascript - в Internet Explorer * он будет думать, что вы покидаете страницу, когда нажимаете ссылку . Если вы используете window.onbeforeunload , тогда в это время появится ваше сообщение о переходе. Только по этой причине мы полностью прекратили использование протокола javascript , поэтому у нас нет этой ошибки, потому что мы забыли проверить ее, когда добавляли сообщение о переходе на какую-либо страницу.
* Мне, наверное, следовало указать версию, когда я впервые написал это. Я вообще не помню, но на всякий случай, если ошибка присутствует только в браузере, который в настоящее время почти не работает, таком как IE 6 или 7, вам, вероятно, лучше проверить его самостоятельно.
Не указывайте его вообще, никогда. Неправильно делать это в тегах
, которые вместо этого следует закодировать следующим образом:
<a href='#' onclick='alert("Hello")'>World</a>
Это пережиток давно минувших дней. Единственный раз, когда я могу вспомнить, где он используется, - это адресная строка браузера (и закладки букмарклета). Держите его подальше от своих страниц.
На практике вы правы.
Это нужно делать в любом случае, когда ожидается что-то, кроме сценария. Теоретически вы можете прикрепить javascript: любой
везде, где вы можете использовать URL-адрес, но это никогда не поддерживалось и теперь официально не рекомендуется использовать.
Однако вам вообще не следует использовать javascript:
. Для ссылок вы можете использовать атрибут onclick
. На самом деле сейчас происходит то, что движок JavaScript идентифицирует javascript:
как метку, поэтому код выполняется.