下面是测试先执行onclick事件还是先执行href,以下为代码:
1
|
<
a
href
=
"javascript:alert(2);"
onclick
=
"alert(1);"
>1先出来是onclick,2先出来是href</
a
>
|
A标签的写法
我们比较熟悉的链接<a>标签写法有以下3种:
1.<a href="链接地址" ></a>
或者
2.<a href="#" οnclick="触发一个事件的函数"></a>
或者
3.<a href="javascript:void(0);" οnclick="触发一个事件的函数"></a>
下面开始说一下不同浏览器中<a>标签的兼容性。
对于firefox 而言,3种写法都是可以的,基本没有什么区别。
而对于IE浏览器或者IE内核的浏览器而言则不同:这不同主要体现在第2和3这二种写法上。
先说一下第3种IE内核有时候会不认 href="javascript:void(0);" 因而触发不了事件函数,导致点击没有任何反应。
那为什么会这样呢?
原因是这样的:IE内核的浏览器,识别<a>标签的时候,先去找 href 属性,并且先执行href中的链接或者函数,如果不识别就不做任何反应[IE最新版已经修改这个问题了]。
解决方法就是尽量不用这个 href="javascript:void(0);" 的属性。
然后第2种,这个不同主要体现在主页面嵌入iframe的时候,如果你的<a >标签中的 “href” 属性为 “#”的话,你点击链接时,页面会自动的滚动,直到iframe的顶部成为当前窗口的最顶部,解决这个问题的方法:
把<a>换成<span >或者别的标签 (在不影响样式的前提下)。
注意:尽量不要用javascript:协议做为A的href属性,这样不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放。
“在Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。
void 操作符用法格式如下:
1. javascript:void (expression)
2. javascript:void expression
expression 是一个要计算的 Javascript 标准的表达式。表达式外侧的圆括号是选的,但是写上去是一个好习惯。 (实现版本 Navigator 3.0)
你以使用 void 操作符指定超级链接。表达式会被计算但是不会当前文档处装入任何内容。 ”
href=#包含了一个位置信息默认的锚是#top 也就是网页的上端 ,而javascript:void(0) 仅仅表示一个死链接,没有任何信息。所以调用脚本的时候最好用void(0)
href一般是指向一个URL地址,也可以调用javascript ,如href="javascript:xxx();",文档中推荐这样写:<a href=" javascript:void(0)" οnclick="xxx();">xx</a>,但是这种方法在复杂环境有时会产生奇怪的问题,尽量不要用javascript:协议做为A的href属性,这样不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放。