javascript event.target无法在mozilla中运行

时间:2012-12-27 08:58:14

标签: javascript jquery asp.net

<script type ='javascript'>
    function fun(userID) {
        var btn = event.target; // error 'event' undefine in mozilla 
        alert(btn.id);
    }
</script>

<asp:linkButton id ="target" style =" cursor:pointer" onclick ="fun('1')" >click here </asp:LinkButton>

我是JavaScript的新手,我已经编写了上面的代码,这段代码在Google Chrome中运行良好,但在Mozilla Firefox中无效。任何人都可以建议如何找到控制射击事件?

5 个答案:

答案 0 :(得分:11)

将事件传递给函数:

<asp:linkButton id ="target" style =" cursor:pointer" onclick ="fun(event, '1')" >click here </asp:LinkButton>

function fun(event, userID)
{
    event= event|| window.event;
    var btn = event.target; 
    alert(btn.id);
}

OR

确保您的活动未定义

function fun(userID)
{
    var e = event || window.event;
    var btn = e.target; 
    alert(btn.id);
}

答案 1 :(得分:0)

如果你 使用关键字this传递按钮,然后不需要事件

...onclick="fun(this,1)"

function fun(but, userID) { 
  var butID=but.id

}

答案 2 :(得分:0)

在Firefox中未定义

event,因为firefox没有此属性,而是可以将事件作为参数提供给事件处理函数。

但是您的代码可以在Chrome和IE中使用

此外,我还会为脚本添加<script type ='text/javascript'>类型,而不仅仅是<script type ='javascript'>

答案 3 :(得分:0)

要访问点击处理程序中的event,请将其附加到jQuery而不是HTML中。

HTML:

<a id ="target" style ="cursor:pointer" data-value="1">click here</a>

使用Javascript:

$(function() {
    $("#target").on('click', function(event) {
        event.preventDefault();
        var btn = this;
        var value = $(this).data('value');
        alert(btn.id + ', ' + value);
    });
});

许多人(包括我自己)认为这是附加事件处理程序的“正确”方法。有几个优点,对事件对象的访问只有一个。

答案 4 :(得分:0)

使用参数[0] .target而不是event.target。大多数浏览器都支持事件全局变量,但firefox不支持。 arguments [0]包含所有相同的属性和函数,但所有浏览器都支持。

作为旁注:arguments数组中的索引可以由您自己的代码更改。在我当前的项目中,参数[0]由于某种原因包含我的所有控制器函数,而全局事件方法和属性包含在参数[1]中。不完全确定为什么会这样,但您可能需要对arguments数组进行一些调试以查看它包含的值并进行相应调整。但是,参数[0]通常可以起作用。