在firefox中,在onclick触发器中获取锚点的href

时间:2012-01-22 03:54:31

标签: javascript firefox javascript-events cross-browser onclick

使用以下html:

<div>
   <a href='#link1' onclick='func()' >Link 1</a>
   <a href='#link2' onclick='func()' >Link 2</a>
   <a href='#link3' onclick='func()' >Link 3</a>
</div>

function func() {
   var href = ??;
   if( href.match(/#link1/) ) {
      ...
   }
}
chrome中的

(和ie?)可以使用此代码

var href = window.event.target.href;

但firefox中不存在window.event

如果事件是通过addEventListener附加的,则可以e作为参数。但是当在html中声明时,看不到将事件传递给onclick函数。

2 个答案:

答案 0 :(得分:4)

this传递给您的函数,然后直接访问href属性。 this将引用进行调用的元素。您可能还希望返回false - 这可以防止单击的链接导航。

http://jsfiddle.net/qjXVy/

function func(elem) {
    alert(elem.href);
    return false;
}

<div>
   <a href="#link1" onclick="func(this)" >Link 1</a>
   <a href="#link2" onclick="func(this)" >Link 2</a>
   <a href="#link3" onclick="func(this)" >Link 3</a>
</div>

答案 1 :(得分:1)

您可以在onclick处理程序本身中将事件作为参数获取。所以你可以这样做:

 <a href="#link1" onclick="func(event)" >Link 1</a>

然后您可以在func中查看事件目标。