href=";javascript:";vs.href=";javascript:void(0)";
我们的web应用程序完全在浏览器上呈现。href=";javascript:";vs.href=";javascript:void(0)";,javascript,Javascript,我们的web应用程序完全在浏览器上呈现。服务器仅通过JSON消息与浏览器对话 因此,我们只需要应用程序的一个页面,大部分都是 有人知道使用href=“javascript:是否会导致问题吗? 它甚至可以在IE7上运行 请不要花费宝贵的时间告诉我内联javascript不好,因为这是由模板引擎生成的:)您可以将它们全部制作成 然后需要添加returnfalse到任何称为onclick of the anchor的函数的末尾,以避免页面跳转到顶部。为什么所有单击事件都作为a href链接 如果将s
服务器仅通过JSON消息与浏览器对话 因此,我们只需要应用程序的一个页面,大部分都是
有人知道使用href=“javascript:
是否会导致问题吗?它甚至可以在IE7上运行
请不要花费宝贵的时间告诉我内联javascript不好,因为这是由模板引擎生成的:)您可以将它们全部制作成
然后需要添加
returnfalse
到任何称为onclick of the anchor的函数的末尾,以避免页面跳转到顶部。为什么所有单击事件都作为a href
链接
如果将
span
标记与:hover
CSS和相应的onclick事件一起使用,这将完全解决问题。这不会导致问题,但与PreventDefault
相同,这是一个技巧
当您在页面中向下移动时,锚定为:
<a href="#" onclick="fn()">click here</a>
只要做a{text decoration:underline;}
你就会得到“link a-like”
没关系,但在最后的
函数中,只需返回false
为了防止默认行为,您不需要做更多的事情。在导航中使用javascript:
时,执行脚本的返回值(如果有)将成为浏览器中显示的新文档的内容。JavaScript中的void
运算符会导致其后面表达式的返回值返回undefined,从而阻止此操作的发生。您可以自己尝试,将以下内容复制到地址栏中,然后按return键:
javascript:"hello"
结果是一个只有“hello”一词的新页面。现在将其更改为:
javascript:void "hello"
……什么也没发生
当您自己编写javascript:
时,不会执行任何脚本,因此脚本执行的结果也未定义,因此浏览器不会执行任何操作。这使得以下内容大致相当:
javascript:undefined;
javascript:void 0;
javascript:
例外情况是,可以通过声明具有相同名称的变量来覆盖undefined。使用void 0通常是毫无意义的,它基本上是从返回方法()的void函数缩减而来的
正如其他人提到的,最好还是使用returnfalse单击处理程序中的code>而不是使用javascript:
协议。使用“javascript:void 0”确实会导致IE出现问题。
当您单击链接时,它将触发窗口的onbeforeunload事件
<!doctype html>
<html>
<head>
</head>
<body>
<a href="javascript:void(0);" >Click me!</a>
<script>
window.onbeforeunload = function() {
alert( 'oops!' );
};
</script>
</body>
</html>
window.onbeforeunload=函数(){
警报('oops!');
};
如果使用jQuery事件设置onclick,则此方法在所有浏览器中都可以:
<a href="javascript:;">Click me!</a>
如前所述,href=“#”随更改url哈希,如果您使用历史记录(或ba bbq)JS插件,可以触发数据重新加载。我通常不使用任何href并使用css更改外观,使它们看起来像链接。因此,除了应用程序的事件处理程序之外,您根本不必担心链接效应
a {
text-recoration: underline;
cursor: pointer;
}
javascript:void(0);-->这将执行void函数并返回undefined。这可能与IE有关。
javascript:;-->这没用。创建死链接最安全。
“#”->这意味着指向同一个DOM,它将在单击时重新加载页面。内联JavaScript不好:)@Second Rikudo,您称之为重复的问题是在一年后提出的one@Mic抱歉,我是从审查队列中找到这个问题的,没有注意到日期(更重要的是,这个问题有更好的答案)。我将反转复制的方向。我已经使用#键用于导航和状态目的。这在单页web应用程序中很常见。因此,我无法使用#我想检查是否在删除空白(0)时没有问题。如果我改用href=“#”
,我需要在所有onclick
中添加一个return false
。我认为这一点也不好,这是相当激进的。虽然这是有道理的。我不知道。。。我需要一个链接标签。ie:对于tabbing,SPAN不会得到focus@Mic如果你只担心标签聚焦,那么给span
一个tabindex
将允许它聚焦。@Jii jiang的确,IE6喜欢把它的九年历史的脚后跟粘在任何可以的地方:)@Jii jiang挑剔,替换“我不推荐这个。关于可访问性的所有良好语义和最佳实践,span首先是一个文本持有者,而不是一个链接或动作事件,如果你想使用另一个标记,而不是其他标记,你应该完全使用input type=“button”imho。除最后一点外,我同意所有这一切。除非您使用真实的href
@Mic:you needreturn false
如果您使用的是href=“#”
否则将重置文档滚动。当然,如果您在链接中使用javascript:
,return false
将阻止该脚本被执行,因此从这个意义上说,它将是无用的。在href
字段中将事件处理程序附加到具有真实URL的锚定的问题在于,如果用户以其他方式激活链接(例如,在主播聚焦时按enter键,鼠标中键),即使他有Javascript,仍然会遵循href
(当然是预期的行为,但仍然很烦人)@YiJ:在链接上按enter键将触发onclick事件。不确定鼠标中键。@Andy发生在Firefox上的我身上,关于鼠标中键。我使用此方法作为没有Javascript的用户的备用方法,但在测试过程中注意到此行为。事件处理程序将不会触发,并且href
链接将在新选项卡中打开。I th如果没有href,链接就不能工作,但是
<!doctype html>
<html>
<head>
</head>
<body>
<a href="javascript:void(0);" >Click me!</a>
<script>
window.onbeforeunload = function() {
alert( 'oops!' );
};
</script>
</body>
</html>
<a href="javascript:;">Click me!</a>
a {
text-recoration: underline;
cursor: pointer;
}