什么是JavaScript事件处理程序中的"javascript:"?

6 javascript javascript-events

什么是javascript:JavaScript事件处理程序?

如:

<input onkeydown="javascript:return false;" type="text" name="textfield" />
Run Code Online (Sandbox Code Playgroud)

Ode*_*ded 8

这是一个错误.事件处理程序中不需要伪协议.

在URL(例如,a元素href属性)上,如果您javascript:使用javascript 输入并遵循它,浏览器将运行javascript代码.

对于事件处理程序,虽然浏览器不会报告错误,但不需要这样做.

  • 它只是不巧妙地抛出错误:它是有效的语法,因为它代表JS中的标签. (3认同)

Fel*_*ing 8

在这种情况下,它将被解释为标签.你也可以写foobar:在这里,它会产生同样的效果.

JavaScript代码中并不真正需要它(我从未在实际代码中看到过它),尽管它可能很有用:

提供带有可使用breakcontinue语句引用的标识符的语句.

例如,您可以使用标签来标识循环,然后使用breakcontinue语句指示程序是应该中断循环还是继续执行.

在您的情况下,标记应该只是:

<input onkeydown="return false;" type="text" name="textfield" />
Run Code Online (Sandbox Code Playgroud)

但是如果你在URI中使用它作为scheme,它会告诉浏览器将URI解释并执行为JavaScript:

<a href="javascript:alert(1);">Foo</a>
Run Code Online (Sandbox Code Playgroud)

(我不是说你应该这样做.)

我认为不太熟悉JavaScript的人会看到这一点,并认为他们必须javascript:在HTML中的JavaScript代码前面,也在事件处理程序中.