有没有办法在onclick属性中访问JavaScript事件?

时间:2011-08-07 21:00:45

标签: javascript events html

假设我需要在属性中编写一个onclick处理程序,如下所示:

<a href='#' onclick='DoSomething(); event.stopPropagation(); return false;'>
    ...</a>

我知道这是一种糟糕的形式,但我想现在必须使用属性。

不幸的是event未定义。我试过e,但也没有定义。有没有办法访问属性中的事件对象,或者任何其他方式来停止事件传播?

3 个答案:

答案 0 :(得分:3)

获取事件对象的位置取决于浏览器。一些(所有?)IE版本将它放在window.event中,但其他人都将其作为参数传递。所以,你最终不得不像这样做一个愚蠢的小舞蹈:

function DoSomething(event) {
    event = event || window.event;
    event.stopPropagation();
    // Do useful work.
    return false;
}

然后像这样设置onclick

<a href="javascript:void(0)" onclick="DoSomething(event)">

我也切换到javascript:void(0),因此您没有将通常的“#解释为页内片段”问题。

答案 1 :(得分:1)

我相信你需要将它传递给函数本身,如下所示:

<a href='#' onclick='DoSomething(event); return false;'>...</a>

function DoSomething(event){
    event.stopPropagation(); 
}

答案 2 :(得分:-1)

根据浏览器的不同,event创建和处理的处理方式不同。

IE在点击发生时创建全局事件对象。 FF不会创建全局 event对象,而是将其作为第一个参数传递给函数。

但在你的情况下,简单地说return false将取消链接操作(如果这是你打算做的)。

<a href='#' onclick='DoSomething(); return false;'>    ...</a>