什么';“这是什么意思?”;javascript:";在代码中(不是URL)?

什么';“这是什么意思?”;javascript:";在代码中(不是URL)?,javascript,Javascript,我偶然发现了一些我以前从未真正见过的奇怪的东西: javascript:a=a+10; 上面这行代码似乎是正确的,并且计算结果令人满意(至少在Firefox中是这样),就像javascript:部分不存在一样 虽然我确实理解旧的javascript:void(…)style的用途,但我就是不明白这个前缀在普通javascript代码中有什么有用的用法 它有什么特殊的含义吗?这个“javascript:”是一个。它应该用来识别一个循环,这样您就可以使用“中断javascript;”来中断它,但在

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

javascript:a=a+10;
上面这行代码似乎是正确的,并且计算结果令人满意(至少在Firefox中是这样),就像
javascript:
部分不存在一样

虽然我确实理解旧的
javascript:void(…)
style
的用途,但我就是不明白这个前缀在普通javascript代码中有什么有用的用法


它有什么特殊的含义吗?

这个“
javascript:
”是一个。它应该用来识别一个循环,这样您就可以使用“
中断javascript;
”来中断它,但在这里被误用了。在非循环语句中添加标签是无害的,但可能不是一个好主意。

它在语法上是有效的(它是a),但没有用处。这是由于人们在不理解代码的情况下复制/粘贴代码造成的。

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

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

<SCRIPT LANGUAGE='VBScript'> MsgBox 'Hi!'</SCRIPT>
MsgBox'Hi!'
因此,具有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>


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

我不能代表所有人,但我从未在普通JS代码中看到过这一点。你能举个例子吗?(这可能很有效,但它不应该有任何影响,所以我很想知道你在哪里看到的)你在哪里看到的?你在哪里写的?它是在锚定标记中还是在何处?请看,。它不仅仅是
javascript:
,任何东西都可以通过在后面添加“:”作为标签。请参阅标签断裂的小示例。+1用于货物培养链接:)。复制/粘贴人似乎在负责内部Web应用程序设计的公司员工中很普遍。这篇关于编程中的cargo cult的wiki文章不是更为贴切吗?[1] 有点离题,因为最初的问题是关于在普通javascript代码中使用标签,但看看weired InternetExplorer是多么有趣;)。当官方(比如IANA)调用这些链接前缀时,他们如何称呼它是很奇怪的。没错,它并没有在IANA正式注册,但这种命名约定仍然应该被使用。除此之外,正如问题所指出的,它不是在URI中,而是在普通代码中。正如昆汀在下文中所说,这几乎肯定是由于有人在不了解自己在做什么的情况下复制和粘贴造成的。这种语言结构在网络发明之前至少30年就被称为标签。它与网络毫无关系。而且它与URI无关。那么,它为什么要使用这个术语呢?@JörgWMittag我觉得Javascript确实实现了标签s(软件工程道德兄弟会的骑士们认为这很糟糕),但没有实现goto。标签的使用允许使用标签“break”,我认为KotSEMB仍然很酷
OUTER:while(1){INNER:while(1){break OUTER;}}
这实际上是完全不同的
javascript:
在URL的开头使浏览器将URL的其余部分作为javascript执行
javascript:
在一行javascript代码的开头是一个名为“
javascript
”的标签,就像
foobar:
是一个名为“
foobar
”的标签一样。它们是完全不相关的,发生在不同的环境中,但碰巧看起来很相似。