我想在没有任何重定向的情况下运行一个简单的JavaScript函数。
把JavaScript调用放在href属性中(像这样)有什么区别或好处吗?
<a href="javascript:my_function();window.print();">....</a>
与把它放在onclick属性(绑定到onclick事件)?
我想在没有任何重定向的情况下运行一个简单的JavaScript函数。
把JavaScript调用放在href属性中(像这样)有什么区别或好处吗?
<a href="javascript:my_function();window.print();">....</a>
与把它放在onclick属性(绑定到onclick事件)?
当前回答
首先,将url放在href中是最好的,因为它允许用户复制链接,在另一个选项卡中打开等等。
在某些情况下(例如HTML频繁变化的网站),每次更新都绑定链接是不实际的。
典型绑定方法
正常的链接:
<a href="https://www.google.com/">Google<a/>
JS的代码是这样的:
$("a").click(function (e) {
e.preventDefault();
var href = $(this).attr("href");
window.open(href);
return false;
});
这种方法的好处是清晰地分离标记和行为,并且不必在每个链接中重复函数调用。
不绑定方法
然而,如果你不想每次都绑定,你可以使用onclick并传入元素和事件,例如:
<a href="https://www.google.com/" onclick="return Handler(this, event);">Google</a>
这是JS的:
function Handler(self, e) {
e.preventDefault();
var href = $(self).attr("href");
window.open(href);
return false;
}
这种方法的好处是你可以随时加载新链接(例如通过AJAX),而不必担心每次都要绑定。
其他回答
<a href="#" onclick="try{FUNCTION_YOU_WANT()}catch(e){}return false">click here</a>
这是
<a href="#" id="sampleApp" onclick="myFunction(); return false;">Click Here</a>
就javascript而言,一个区别是onclick处理程序中的this关键字将引用其onclick属性的DOM元素(在本例中为<a>元素),而href属性中的this将引用窗口对象。
在表示方面,如果链接中缺少href属性(例如<a onclick="[…]">),那么默认情况下,浏览器将显示文本游标(而不是通常需要的指针游标),因为它将<a>视为锚,而不是链接。
在行为方面,当通过href导航指定操作时,浏览器通常支持使用快捷方式或上下文菜单在单独的窗口中打开该href。当只通过onclick指定操作时,这是不可能的。
但是,如果您想知道从DOM对象的单击中获得动态操作的最佳方法是什么,那么使用javascript将事件与文档内容分开是最佳方法。你可以通过多种方式做到这一点。一个常见的方法是使用javascript库,如jQuery来绑定一个事件:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<a id="link" href="http://example.com/action">link text</a>
<script type="text/javascript">
$('a#link').click(function(){ /* ... action ... */ })
</script>
在任何不是专门用于脚本的属性中使用javascript:都是一种过时的HTML方法。虽然从技术上讲它是可行的,但您仍然将javascript属性分配给非脚本属性,这不是一个好的实践。它甚至可以在旧的浏览器上失败,甚至在一些现代的浏览器上(一个谷歌论坛的帖子似乎表明Opera不喜欢'javascript:' url)。
更好的做法是第二种方式,将javascript放到onclick属性中,如果没有可用的脚本功能,则忽略该属性。在href字段中放置一个有效的URL(通常是'#'),以供那些没有javascript的人使用。
<hr>
<h3 class="form-signin-heading"><i class="icon-edit"></i> Register</h3>
<button data-placement="top" id="signin_student" onclick="window.location='signup_student.php'" id="btn_student" name="login" class="btn btn-info" type="submit">Student</button>
<div class="pull-right">
<button data-placement="top" id="signin_teacher" onclick="window.location='guru/signup_teacher.php'" name="login" class="btn btn-info" type="submit">Teacher</button>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#signin_student').tooltip('show'); $('#signin_student').tooltip('hide');
});
</script>
<script type="text/javascript">
$(document).ready(function(){
$('#signin_teacher').tooltip('show'); $('#signin_teacher').tooltip('hide');
});
</script>