代码(而不是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。