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

我偶然发现了一些以前从未见过的奇怪现象:

javascript:a=a+10;

上面的代码行看起来是正确的,并且计算得非常顺利(至少在 Firefox 中是这样) ,就像 javascript:部分从未存在过一样。

虽然我确实理解在 DHTML的黑暗时代使用旧的 javascript:void(...)样式 <a href=".."/>的目的,但我就是想不出这个前缀在普通 JavaScript 代码中有什么有用的用法。

有什么特别的含义吗?

3815 次浏览

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

它在语法上是有效的(它是 标签) ,但是没有用。这是 货物邪教造成的人们复制/粘贴代码没有理解它。

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

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

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

因此,具有 JavaScriptonclick 事件的元素(如下所示)将导致错误。

<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:标签的实际用法(在这种情况下我们还能称之为 label 吗?)我在创建混合语言 HTA 时遇到的问题。