什么'这就是“;javascript:“;在代码中(而不是URL)

What's the point of "javascript:" in code (not URLs)?

本文关键字:URL 代码 javascript 什么      更新时间:2023-09-26

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

javascript:a=a+10;

上面的行似乎是正确的,并且评估得很好(至少在Firefox中是这样),就像javascript:部分从未存在过一样。

虽然我确实理解在DHTML的黑暗时代使用的旧javascript:void(...)风格<a href=".."/>的目的,但我只是想不出这个前缀在普通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>

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

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