【发布时间】:2011-09-06 03:22:44
【问题描述】:
什么是 JavaScript 事件处理程序中的 javascript:?
如:
<input onkeydown="javascript:return false;" type="text" name="textfield" />
【问题讨论】:
标签: javascript javascript-events
什么是 JavaScript 事件处理程序中的 javascript:?
如:
<input onkeydown="javascript:return false;" type="text" name="textfield" />
【问题讨论】:
标签: javascript javascript-events
这只是告诉浏览器后面是 JavaScript 代码的标记。但是,它不是必需的,因此您不必包含它。
【讨论】:
这是不应该存在的东西。
javascript: 前缀主要用于链接,因为浏览器中的javascript: 协议通常会执行代码,例如:
<a href="javascript:alert('test')">Test</a>
不过,在事件处理程序中,它已经在解析 JavaScript,因此不需要它。它基本上什么都不做。
【讨论】:
你可以写return false。当时javascript 协议在链接中很有用。 href属性:<a href="javascript:return false">
【讨论】:
在这种情况下,它将被解释为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 中 JavaScript 代码前面的任何地方,包括事件处理程序。
【讨论】:
<a href="javascript:doStuff()"> 的广泛使用,但我没有证据支持这一点。是否可以在事件处理程序属性中编写 VBScript?
javascript: 和 @ 987654332@ 在事件中。我认为它不起作用,IIRC IE 只是选择了一个默认值用于事件属性。
这是一个错误。事件处理程序中不需要伪协议。
在 URL 上(例如a 元素 href 属性),如果您输入 javascript: 并在其后面加上 javascript,浏览器将运行 javascript 代码。
对于事件处理程序,这不是必需的,但浏览器不会报告错误。
【讨论】: