JavaScript事件处理程序中的javascript:
是什么?
如:
<input onkeydown="javascript:return false;" type="text" name="textfield" />
答案 0 :(得分:8)
这是一个错误。事件处理程序中不需要伪协议。
在网址(例如a
元素href
属性)上,如果您输入javascript:
并使用javascript进行操作,则浏览器将运行javascript代码。
对于事件处理程序,虽然浏览器不会报告错误,但不需要这样做。
答案 1 :(得分:8)
在这种情况下,它将被解释为label。你也可以在这里写foobar:
,它会产生同样的效果。
JavaScript代码中并不真正需要它(我从未在实际代码中看到过它),尽管它可能很有用:
提供带有标识符的语句,您可以使用
break
或continue
语句引用该标识符。例如,您可以使用标签来标识循环,然后使用
break
或continue
语句来指示程序是应该中断循环还是继续执行循环。
在您的情况下,标记应该只是:
<input onkeydown="return false;" type="text" name="textfield" />
但是如果你在URI中使用它作为方案,它会告诉浏览器将URI解释并执行为JavaScript:
<a href="javascript:alert(1);">Foo</a>
(我不是说你应该这样做。)
我认为不熟悉JavaScript的人会看到这一点,并认为他们必须将javascript:
置于HTML代码的前面,而且还要放在事件处理程序中。
答案 2 :(得分:1)
你可以写return false
。那时javascript
协议在链接中很有用。 href
属性:<a href="javascript:return false">
答案 3 :(得分:0)
这不应该存在。
javascript:
前缀主要用于链接,因为浏览器中的javascript:
协议通常会执行代码,例如:
<a href="javascript:alert('test')">Test</a>
但是,在事件处理程序中,它已经在解析JavaScript,因此不需要它。它基本上什么都不做。
答案 4 :(得分:-1)
告诉浏览器接下来是JavaScript代码只是标记。但是,它不是必需的,因此您不必包含它。