代码(而不是URL)中的“javascript:”有什么意义?

我偶然发现了一个我以前从未见过的奇怪东西:

javascript:a=a+10; 

上面的代码看起来是正确的,至less在Firefox中是一样的,就好像javascript:部分从来不存在一样。

虽然我明白在DHTML的黑暗时代使用旧的javascript:void(...)风格的目的,我只是无法弄清楚这个前缀的任何有用的用法纯JavaScript代码。

它有一些特殊的含义吗?

javascript: ”是一个标签 。 它应该被用来识别一个循环,这样你就可以使用“ break javascript; ”来突破它,但在这里被滥用。 这是无害的,但可能不是一个好主意,添加一个标签,而不是一个循环的声明。

它在语法上是有效的(这是一个标签 ),但是没用。 这是人们复制/粘贴代码而不理解它所造成的货运结果 。

JavaScript也可以用于HTML应用程序 (HTA)中的网页之外 。 在HTA中,可以使用VBScript和JavaScript的混合。 在应用程序中使用脚本时,脚本语言会自动设置为VBScript。

 <SCRIPT LANGUAGE='VBScript'> MsgBox 'Hi!'</SCRIPT> 

所以带有JavaScript onclick事件的元素(如下所示)将导致错误。

 <a id="myLink" href="#" onclick="MyFunction();return false;">Click me!</a> 

你可以通过显式的将语言设置为JavaScript来解决这个问题

 <a id="myLink" href="#" onclick="javascript:alert('Javascript Executed!');return false;">Click me for Javascript!</a> 

或者在VBScript中通过

 <a id="myLink" href="#" onclick='vbscript:msgbox "VBScript Executed!"'>Click me for VBScript!</a> 

注:我知道这是一个angular落的情况,但它是在创build混合语言HTA时遇到的javascript: label的实际用法(我们仍然可以将其称为此上下文中的标签?)。

我同意它作为一个标签的无用,但在某些情况下,它仍然是有用的。 例如,您需要从地址栏执行一小段代码或写一个小书签。 但在这种情况下, javascript:将更像是一个伪协议scheme。