Какой смысл "javascript:" в коде (а не URL-адресах)?

Я наткнулся на что-то странное, чего я никогда раньше не видел:

javascript:a=a+10;

Вышеприведенная строка кажется правильной и успешно оценивает (по крайней мере, в Firefox) так же, как если бы часть javascript: никогда не существовала.

В то время как я понимаю цель старого стиля javascript:void(...) <a href=".."/>, используемого в темные времена DHTML, я просто могу" t выяснить любое полезное использование этого префикса в простом JavaScript-коде.

Есть ли у него какой-то особый смысл?

Ответ 1

"javascript:" - это label. Он должен использоваться для идентификации цикла, чтобы вы могли использовать "break javascript;", чтобы вырваться из него, но здесь неправильно используется. Это безвредно, но, вероятно, не рекомендуется добавлять метку в оператор, который не является циклом.

Ответ 2

Он синтаксически действителен (это label), но бесполезен. Это обработка грузов, вызванная тем, что люди копируют/вставляют код, не понимая его.

Ответ 3

JavaScript также можно использовать из веб-страниц в HTML-приложении (HTA). В HTA можно использовать сочетание VBScript и JavaScript. Когда вы используете скрипты в своем приложении, как и в следующем, язык сценариев автоматически устанавливается на VBScript.

<SCRIPT LANGUAGE='VBScript'> MsgBox 'Hi!'</SCRIPT>

Таким образом, элемент с событием onclick JavaScript, как и в следующем, приведет к ошибке.

<a id="myLink" href="#" onclick="MyFunction();return false;">Click me!</a>

Вы можете решить эту проблему, явно задав язык JavaScript с помощью

<a id="myLink" href="#" onclick="javascript:alert('Javascript Executed!');return false;">Click me for Javascript!</a>

Или в VBScript

<a id="myLink" href="#" onclick='vbscript:msgbox "VBScript Executed!"'>Click me for VBScript!</a>

Примечание. Я знаю, что это угловой случай, но это фактическое использование метки javascript: (можем ли мы по-прежнему называть это меткой в ​​этом контексте?), с которой я столкнулся при создании смешанных языков HTA.

Ответ 4

Я согласен с тем, что это бесполезность как ярлык, но в некоторых случаях это все еще полезно. Например, вам нужно выполнить короткий фрагмент из адресной строки или написать букмарклет. Но в этом случае javascript: будет больше похож на схему псевдопротокола.