我的印象是,在 URL 属性(例如 href)中使用 JavaScript 时,只需要指定“协议”。这是唯一“有用”的上下文吗 javascript:?

明智:

<a href="javascript:alert('Hello')">World!</a>

愚蠢的:

<form onsubmit="javascript:alert('oops!')">

这是正确的吗?或者是否有一些我需要注意的晦涩错误/用例?

有帮助吗?

解决方案

javascript: 事件处理程序的伪协议只会被忽略,您不需要它,JavaScript引擎将解释 javascript: 作为一个 标签语句.

标签只是为语句提供标识符,并让您在程序中的其他地方参考它。

恕我直言,这个伪协议仅对书签有用...

推荐文章:

其他提示

正如其他答案所提到的,避免使用 javascript: href 链接,并且在事件处理程序属性中完全没有必要。然而,自从 A 标签有时在语义上仍然是正确的,您需要在 href 属性如果你想要你的 :link:hover 要应用于 Internet Explorer 中的元素的 CSS 样式。在这种情况下,使用:

<a href="#" onclick="doSomething(); return false;">Link</a>

或者

<a href="javascript://" onclick="doSomething();">Link</a>

有一个(有点模糊的)错误 javascript 协议 - 在 Internet Explorer* 中,当您单击链接时,它会认为您将离开页面。如果您正在使用 window.onbeforeunload, ,那么此时就会出现您的导航离开消息。仅出于这个原因,我们就停止使用 javascript 协议完全正确,因此我们不会出现此错误,因为当我们向某个页面添加导航离开消息时,我们忘记检查它。


* 我可能应该在第一次写这篇文章时指定版本。我完全不记得了,但以防万一该错误仅出现在现在大部分已不可用的浏览器(如 IE 6 或 7)中,您可能最好自己测试一下。

永远不要指定它。做这件事是错误的 <a> 标签,应该像这样编码的标签:

<a href='#' onclick='alert("Hello")'>World</a>

从过去的日子开始。我唯一能想到它使用的位置将在浏览器地址栏(和书签书签)中。将其放在您的页面上。

实际上,您是正确的。

您需要在任何预期脚本以外的其他情况下执行此操作。从理论上讲,您可以坚持 javascript:whatever 您可以使用URL的任何地方,但这永远不会得到支持,现在正式建议使用使用。

然而, ,您真的不应该使用 javascript: 根本。对于链接,您可以使用 onclick 属性。如今实际上发生的是JavaScript引擎正在识别 javascript: 作为标签,这就是代码执行的原因。

你们都应该检查一下http://bytes.com/topic/javascript/answers/504856-javascript-pseudo-protocol-event-handlers尤其是“Lasse Reichstein Nielsen”的帖子,因为这里的大多数答案在某种程度上都是不正确的。

另请记住,锚标记根本不需要 href!那是<a>hi</a> 是有效的 xhtml。使用时出现的问题 href="#" 是它可能会滚动到页面顶部..它根本不需要。最后,如果您实际上并不想要锚标记的行为,则不应使用它。您可以使用 css 模拟锚点(cursor:pointer)以及 mouseenter 和 mouseleave 等事件(这需要更多工作,但不会“破坏”锚标记的预期行为)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top