83

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

javascript:a=a+10;

上面的行似乎是正确的,并且可以愉快地评估(至少在 Firefox 中),就像该javascript:部分从未存在一样。

虽然我确实理解在DHTML的黑暗时代使用的旧javascript:void(...)样式的目的,但我只是无法在纯 JavaScript 代码中找出这个前缀的任何有用用法。<a href=".."/>

它有什么特殊含义吗?

4

4 回答 4

97

javascript:”是一个标签。它应该被用来识别一个循环,这样你就可以使用 " break javascript;" 来打破它,但在这里被滥用了。将标签添加到不是循环的语句是无害的,但可能不是一个好主意。

于 2013-09-02T09:31:03.287 回答
52

它在语法上是有效的(它是一个标签)但没用。这是由于人们在不理解代码的情况下复制/粘贴代码造成的货物崇拜。

于 2013-09-02T09:31:24.087 回答
12

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>

注意:我知道这是一个极端情况,但它是javascript:我在创建混合语言 HTA 时遇到的标签的实际用法(在这种情况下我们仍然可以称它为标签吗?)。

于 2013-09-02T10:29:38.823 回答
-2

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

于 2013-09-02T09:43:14.497 回答