繁体   English   中英

javascript event.target在Mozilla中不起作用

[英]javascript event.target not working in mozilla

<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中无法正常工作。 谁能建议如何找到控制触发事件?

将事件传递给函数:

<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);
}

要么

确保您的活动未定义

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

如果使用关键字this传递按钮,则无需事件

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

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

}

在firefox中未定义event ,因为firefox不具有此属性,而是可以将事件作为参数提供给事件处理程序函数。

但是,您的代码可以在Chrome和IE中正常工作

此外,我还将具有类似<script type ='text/javascript'> <script type ='javascript'> ,而不仅仅是<script type ='javascript'>

要在点击处理程序中访问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);
    });
});

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM