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

在 Google Chrome 和 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 上运行

4

3 回答 3

46

确保您定义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" ;
} 
于 2011-09-17T19:49:23.567 回答
1

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

var x = $(this).attr('id');
于 2015-01-22T14:32:54.207 回答
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

于 2018-01-12T05:52:32.950 回答