17

换句话说,有什么区别

onclick="myFunction()"

onclick="JavaScript:myFunction()"
4

2 回答 2

17

事件处理程序中的JavaScript:TYPE/LABEL/PREFIX(找不到它的实际名称)仅用于一个目的

在 IE 中,如果页面上的第一个脚本不是JavaScript,则页面其余部分上的内联 JavaScript 有(仍然有?)有javascript:前缀。

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

我从 msdn 中查找了官方文档,但这里有一些支持我的讨论:

从 Javascript 调用 VBScript

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

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

您必须告诉 IE 您正在使用 VBS 和 JScript,否则假设在这种情况下所有函数都是 VBS。要么添加一个(空的?)JavaScript 脚本元素 [在页面顶部],要么在 onchange 上使用 jscript: 协议。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> 
于 2012-04-09T05:09:54.940 回答
7

正如@ephemient 在他的评论中提到的那样,javascriptinonclick什么都不做,它基本上是一个无用的标签。javascript标签中使用前缀<a>告诉浏览器将以下内容作为 javascript 运行,就像您在浏览器中输入了相同的内容一样。你可以在自己浏览器的地址栏试试看,直接输入javascript: alert("Hello")

总结一下:

onclick: 浏览器希望这是 javascript,所以如果你输入javascript:前缀,浏览器会说:'哦,多么古怪,你放了一个标签'。

<a href浏览器位置栏中或中:浏览器不希望这是 javascript,因此如果您输入javascript:作为前缀,浏览器会说:'哦,我需要将其作为 javascript 运行'。

于 2012-04-09T04:18:07.477 回答