换句话说,有什么区别
onclick="myFunction()"
和
onclick="JavaScript:myFunction()"
事件处理程序中的JavaScript:
TYPE/LABEL/PREFIX(找不到它的实际名称)仅用于一个目的:
在 IE 中,如果页面上的第一个脚本不是JavaScript,则页面其余部分上的内联 JavaScript 有(仍然有?)有javascript:
前缀。
javascript:
不要与 href 中的协议混淆(顺便说一句,也应该避免)。href="javascript:..."
仅在 AREA 标记中的旧网景中才需要。当您看到href="javascript:void(0)"
有人需要使用onclick="....; return false"
时,除非他们将其放在那里以提醒用户该链接是由 javascript 驱动的链接。如果关闭 JS,它将失败。
我从 msdn 中查找了官方文档,但这里有一些支持我的讨论:
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>
正如@ephemient 在他的评论中提到的那样,javascript
inonclick
什么都不做,它基本上是一个无用的标签。javascript
标签中使用前缀<a>
告诉浏览器将以下内容作为 javascript 运行,就像您在浏览器中输入了相同的内容一样。你可以在自己浏览器的地址栏试试看,直接输入javascript: alert("Hello")
。
总结一下:
在onclick
: 浏览器希望这是 javascript,所以如果你输入javascript:
前缀,浏览器会说:'哦,多么古怪,你放了一个标签'。
在<a href
浏览器位置栏中或中:浏览器不希望这是 javascript,因此如果您输入javascript:
作为前缀,浏览器会说:'哦,我需要将其作为 javascript 运行'。