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

时间:2012-04-09 04:08:28

标签: javascript

换句话说,

之间有什么区别
onclick="myFunction()"

onclick="JavaScript:myFunction()"

2 个答案:

答案 0 :(得分:13)

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

在IE中, IFF 页面上的第一个脚本是 JavaScript,页面其余部分的内联JavaScript(仍然有?)有{{1前缀它。

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

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

Calling VBScript from Javascript

  

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

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

  

你必须告诉IE你正在使用VBS和JScript,否则就是   假设在这种情况下所有函数都是VBS。要么添加一个   (空?)JavaScript脚本元素[在页面顶部]或使用jscript:protocol   平变化。   平变化= “JScript的:的location.hash =此[this.selectedIndex]。价值;”

实施例

onclick="....; return false"

答案 1 :(得分:4)

正如@ephemient在他的评论中提到的那样,javascript中的onclick什么也没做,它基本上是一个无用的标签。 javascript标记中使用前缀<a>来告诉浏览器以javascript运行以下内容,就像您在浏览器中输入相同的内容一样。您可以在自己浏览器的位置栏中试用,然后查看,只需输入javascript: alert("Hello")

总结:

onclick中:浏览器希望这是javascript,因此如果您输入javascript:作为前缀,浏览器会说:'哦,有多古怪,你会贴上标签'。

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