event.target无法在Firefox上运行

时间:2011-09-17 19:29:54

标签: javascript firefox javascript-events firefox3.5

 var x = event.target||event.srcElement;
 document.getElementById(x.id).style.left =  200 + "px" ;
 document.getElementById(x.id).style.top  =  100 + "px" ;

在谷歌浏览器和IE浏览器上工作正常但在Firefox上没有。在谷歌上尝试过。谷歌说event.srcElement(适用于IE但不适用于Firefox)所以我添加了event.target但仍然无法正常工作。我需要做什么改变才能在firefox上工作吗?顺便说一句,我使用3.5版本的Firefox。

       function up()
           {
                dragok = false;
                document.onmousemove = null;
                var x = event.target||event.srcElement;
                document.getElementById(x.id).style.left= 200 + "px" ;
                document.getElementById(x.id).style.top= 100 + "px" ;
           } 

请帮助我在firefox上运行

3 个答案:

答案 0 :(得分:43)

确保将event定义为处理程序的形式参数。

IE全局定义它,Chrome在两个地方定义它,因此它可以任意方式工作,但Firefox仅将其定义为函数参数。

function up( e ) {
    //       ^-----------------------------------------------------+
    if( !e ) e = window.event; // <---needed this --- and this ->--+

    dragok = false;
    document.onmousemove = null;
    var x = e.target||e.srcElement; // <--- and these
    document.getElementById(x.id).style.left= 200 + "px" ;
    document.getElementById(x.id).style.top= 100 + "px" ;
} 

答案 1 :(得分:1)

我使用Jquery解决了我的问题。例如,要获取可以使用的元素的ID:

var x = $(this).attr('id');

答案 2 :(得分:0)

此解决方案也适用于Firefox浏览器。当开始keydown操作时,它会将event属性设置为全局变量。

 var keyEvent=null; 

event属性分配给keyEvent.item为目标元素。

  $(document).on("keydown",'.item', function(e){ 

                keyEvent=e;                                    

        },this))

然后。在代码中使用keyEvent

     function up( e ) {
           if( !e ) e = keyEvent;  
             dragok = false;
             document.onmousemove = null;
             var x = e.target||e.srcElement; 
             document.getElementById(x.id).style.left= 200 + "px" ;
             document.getElementById(x.id).style.top= 100 + "px" ;
         }

注意:请勿尝试将event属性设置为window的全局变量。