Onclick函数在返回true时未阻止锚点标记的HREF值
Onclick function is not blocking the HREF value of anchor tag on returning true
我发现onclick函数必须返回false才能继续href值,返回true才能阻止href值。我在这里也用了同样的。在返回false时,它是正确的,继续URL,但在返回true时,它也打开URL页面。
那么,从onclick函数返回true/false值有什么不同呢。
我使用的是Firefox 9.0.1和IE 7。下面是我的html文件。
<html>
<head>
<script language="JavaScript" type="text/javascript">
function clickthis()
{
alert("its onclick Function call ");
return true;
}
</script>
</head>
<body >
<a id="foo" onclick="clickthis();" href="http://google.com">google</a>
</body>
</html>
我对这种行为感到困惑。
事件处理程序需要返回false
以阻止正常的链接操作,并且不能仅调用函数;如果您希望抑制该操作,则处理程序本身需要返回值CCD_。所以属性应该是
onclick="return clickthis();"
您应该对事件对象使用preventDefault
方法。示例:http://jsfiddle.net/lolo/vD5hK/
[用Firefox 35.0.1]测试
我为它做了一些解决方案。如果检测到锚,并定义了href,则单击将接管并重定向页面。
代码:
<html><title></title><body>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script language="JavaScript" type="text/javascript">
function clickthis(e, obj)
{
console.log('click');
e.preventDefault();
$.ajax({url: "a.html",
success: function(result){
console.log('ajax success');
makeRedirect(obj);
},
error: function(result){
console.log('ajax error');
makeRedirect(obj);
}
});
}
function makeRedirect(obj){
if (obj && obj.tagName == 'A' && obj.href){
console.log('redirecting');
window.location = obj.href;
}
}
</script>
<a id="foo" onclick="clickthis(event,this);" href="http://www.google.com">###3 google 3###</a>
</body></html>
注意:你甚至可以在所有异步逻辑完成后进行重定向。。。
您需要使用onclick="return clickthis();"
,单击this()必须返回false。
如果你要进行渐进增强(即,如果用户没有启用javascript,则转到google.com,如果用户启用了javascript,则显示警报),那么你希望你的标记看起来像这样:
<html>
<head>
<script language="JavaScript" type="text/javascript">
function clickthis(e)
{
e.preventDefault();
alert("its onlcick Function call ");
return false;
}
</script>
</head>
<body >
<a id="foo" onclick="clickthis(event);" href="http://google.com">google</a>
</body>
</html>
相关文章:
- href属性内的javascript函数
- JSP 通过 href 调用 JavaScript 函数
- 为标记调用href中的两个javascript函数
- 如何从区域href中激发JS函数
- jquery在李内部的href上运行函数
- 在href跳转到另一个html元素之前,执行Knockout.js数据绑定:点击函数
- 如何检查窗口是否已滚动到href,然后在javascript/jQuery中执行函数
- 如何从href调用javascript函数
- 恢复javascript函数中的href属性
- JavaScript:在同一页面上的所有href上调用切换函数
- 如何在 JWPLAYER 中一一调用带有 arugments 的 HREF 函数
- 当目标为可下载文件时,当 href 时,Ajax 函数不会在类上触发
- 在 href 单击时返回另一个函数的响应
- 如何使用 javascript 函数设置 href 参数值
- 如何通过 javascript 函数的返回值生成 href 链接的内容
- 加载函数对 href 不起作用
- 从 JavaScript 函数 WebDriver 访问动态生成的 HREF
- 从调用 JS 函数的 href 中删除 #
- JavaScript 中的函数在通过单击 href url 加载新页面时不会调用
- 在 window.location.href 下载后执行函数