JavaScript伪协议实际上做了什么?

Hoa*_*Hoa 14 javascript

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

onclick="myFunction()"
Run Code Online (Sandbox Code Playgroud)

onclick="JavaScript:myFunction()"
Run Code Online (Sandbox Code Playgroud)

mpl*_*jan 13

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

在IE中,IFF页面上的FIRST脚本不是 JavaScript,页面其余部分的内联JavaScript(仍有?)有javascript:前缀.

不要将其与href中的javascript: 协议相混淆(顺便提一下也应该避免).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:protocol.平变化= "JScript的:的location.hash =此[this.selectedIndex].价值;"

<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> 
Run Code Online (Sandbox Code Playgroud)


Abd*_*aly 7

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

总结一下:

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

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