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

Что на самом деле делает псевдо-протокол JavaScript?

Другими словами, какая разница между

onclick="myFunction()"

и

onclick="JavaScript:myFunction()"
4b9b3361

Ответ 1

JavaScript: TYPE/LABEL/PREFIX (не смог найти фактическое имя для него) в обработчике событий служит только только одна цель:

В IE IFF FIRST script на странице НЕ JavaScript, встроенный JavaScript на остальной части страницы (все еще есть?) имеет JavaScript: с префиксом.

Не следует путать с протоколом JavaScript: в href (который, кстати, также следует избегать). href="javascript:..." требуется только в старых netscapes в теге AREA. Когда вы видите href="javascript:void(0)", кто-то должен использовать onclick="....; return false" вместо этого, если они не помещают его туда, чтобы предупредить пользователя о том, что ссылка является управляемой javascript. Он отключится, если JS выключен.

Я искал официальную документацию из msdn, но вот дискуссии, чтобы поддержать меня:

Вызов VBScript из Javascript

Internet Explorer по умолчанию использует язык первого элемента scriptон анализирует. Поэтому, если первый элемент script - это javascript, вы не должны необходимо указать "javascript:" в обработчике событий.

http://www.webdeveloper.com/forum/archive/index.php/t-135462.html

Вы должны сказать, что вы используете VBS AND JScript, иначе предположение - это все функции VBS в этом случае. Либо добавьте (пустой?) элемент JavaScript script [в верхней части страницы] или используйте протокол jscript: на по изменению. OnChange = "JScript: location.hash = это [this.selectedIndex].value;"

Пример

<html>
<head>
<script language="VBScript">
' some vbscript here forces the default language
' of the page to be VBScript and not jScript/JavaScript
</script>
</head>
<body onload="javascript:alert('I am inline in an event handler - boo me')">
.
.
<a href="..." onclick="javascript:alert('and so am I'); return false">Click</a>
.
<a href="javascript:alert('javascript: PROTOCOL is NOT the same (but avoid it too)')">
  Click
</a>


</body>
</html> 

Ответ 2

Как @emhemient упоминает в своем комментарии, javascript в onclick ничего не делает, это в основном бесполезный ярлык. Префикс javascript используется в теге <a>, чтобы сообщить браузеру запустить следующее как javascript, точно так же, как если бы вы ввели то же самое в свой браузер. Вы можете попробовать его в строке местоположения своего браузера и посмотреть, просто введите javascript: alert("Hello").

Подводя итог:

В onclick: браузер ожидает, что это будет javascript, поэтому, если вы введете javascript: в качестве префикса, браузер скажет: "О, как странно, вы помещаете ярлык".

В <a href или в строке местоположения браузера: браузер не ожидает, что это будет javascript, поэтому, если вы введете javascript: в качестве префикса, браузер скажет: "О, мне нужно запустить это как javascript",.