JavaScript伪协议实际上做什么?

JavaScript伪协议实际上做什么?,javascript,Javascript,换句话说,它们之间的区别是什么 onclick="myFunction()" 及 正如@ephemient在他的评论中提到的,onclick中的javascript没有任何作用,它基本上是一个无用的标签。前缀javascript用在标记中,告诉浏览器以javascript的形式运行以下内容,就像您在浏览器中输入了相同的内容一样。您可以在自己浏览器的位置栏中尝试,只需输入javascript:alert(“Hello”) 总结如下: 在onclick:浏览器希望这是javascript,因此如果

换句话说,它们之间的区别是什么

onclick="myFunction()"


正如@ephemient在他的评论中提到的,
onclick
中的
javascript
没有任何作用,它基本上是一个无用的标签。前缀
javascript
用在
标记中,告诉浏览器以javascript的形式运行以下内容,就像您在浏览器中输入了相同的内容一样。您可以在自己浏览器的位置栏中尝试,只需输入
javascript:alert(“Hello”)

总结如下:

onclick
:浏览器希望这是javascript,因此如果您输入
javascript:
作为前缀,浏览器会说:“哦,多么奇怪,您放了一个标签。”


中,事件处理程序中的
JavaScript:
类型/标签/前缀(找不到它的实际名称)仅用于一个目的:

在IE中,IFF页面上的第一个脚本是而不是JavaScript,页面其余部分的内联JavaScript已经(仍然有?)具有
JavaScript:
前缀

不要将其与href中的
javascript:
协议混淆(顺便说一句,这也是应该避免的)
href=“javascript:…”
仅在区域标记中的旧Netscape中需要。当您看到
href=“javascript:void(0)”
时,需要有人使用
onclick=“..;return false”
,除非他们将其放在那里以提醒用户该链接是由javascript驱动的。如果JS关闭,它将失败

我从msdn中查找了官方文档,但以下是支持我的讨论:

Internet Explorer默认为第一个脚本元素的语言 它解析。因此,如果第一个脚本元素是javascript,则不应 需要在事件处理程序中指定“javascript:”

您必须告诉IE您正在使用VBS和JScript,否则 假设在此实例中所有函数都是VBS。或者添加一个 (空?)JavaScript脚本元素[在页面顶部]或使用 一旦改变。 onchange=“jscript:location.hash=this[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> 

'此处的某些vbscript强制使用默认语言
'页的名称为VBScript,而不是jScript/JavaScript
.
.
.

也许你的意思是
?把
javascript:
放在onclick属性中从来没有做过任何有用的事情。哇,自从我上次使用
onclick
属性以来已经有很长时间了。不引人注目的javascript让您可以在javascript中的元素上绑定事件,而且更具可组合性……javascript(TM)的大写疯狂开始了。@Ephmient请查看我的答案,了解事件句柄中
javascript:
前缀的原因。它是“就像您在浏览器中输入了相同的内容一样”我不同意。如果你将javascript前缀/标签粘贴到浏览器中,它会神奇地变成一个协议,但这纯粹是一个副作用,与onclick无关。这正是我要说的,我更新了答案,试图让它更清楚,因为显然我没有做得很好。哇,我没有意识到IE中的这个奇怪之处!很高兴没有遇到它。
<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>