我的印象是在 URL 属性中使用 JavaScript 时只需要指定“协议”,例如在 hrefs 中。这是 ? 的唯一“有用”上下文javascript:
吗?
明智的:
<a href="javascript:alert('Hello')">World!</a>
愚蠢的:
<form onsubmit="javascript:alert('oops!')">
这是正确的吗?或者是否有一些我需要注意的晦涩的错误/用例?
我的印象是在 URL 属性中使用 JavaScript 时只需要指定“协议”,例如在 hrefs 中。这是 ? 的唯一“有用”上下文javascript:
吗?
明智的:
<a href="javascript:alert('Hello')">World!</a>
愚蠢的:
<form onsubmit="javascript:alert('oops!')">
这是正确的吗?或者是否有一些我需要注意的晦涩的错误/用例?
javascript:
事件处理程序上的伪协议只会被忽略,您不需要它,JavaScript 引擎将解释javascript:
为Label Statement。
标签只是为语句提供一个标识符,并允许您在程序中的其他地方引用它。
恕我直言,这个伪协议只对书签有用......
推荐文章:
正如其他答案所提到的,避免使用javascript:
href 链接,并且在事件处理程序属性中完全没有必要。但是,由于A
标签有时在语义上仍然是正确的,href
如果您希望将您的样式:link
和:hover
CSS 样式应用于 Internet Explorer 中的元素,则需要在属性中添加一些内容。在这种情况下,请使用:
<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 之类的事件来模拟锚点(这是更多工作,但不会“破坏”锚点标记的预期行为)。