Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
href=";javascript:";vs.href=";javascript:void(0)";_Javascript - Fatal编程技术网

href=";javascript:";vs.href=";javascript:void(0)";

href=";javascript:";vs.href=";javascript:void(0)";,javascript,Javascript,我们的web应用程序完全在浏览器上呈现。服务器仅通过JSON消息与浏览器对话 因此,我们只需要应用程序的一个页面,大部分都是 有人知道使用href=“javascript:是否会导致问题吗? 它甚至可以在IE7上运行 请不要花费宝贵的时间告诉我内联javascript不好,因为这是由模板引擎生成的:)您可以将它们全部制作成 然后需要添加returnfalse到任何称为onclick of the anchor的函数的末尾,以避免页面跳转到顶部。为什么所有单击事件都作为a href链接 如果将s

我们的web应用程序完全在浏览器上呈现。
服务器仅通过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而不是使用
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 need
return 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;
}