2011-09-17 186 views
13
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。event.target不能在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

+0

你可以做一個http://jsfiddle.net/或http://jsbin.com/的完整代碼的「不工作」的例子? –

+0

你能否展示更多的代碼(理想的JSFiddle演示)?順便說一句,沒有必要尋找'x'的'id',然後通過'id'查找特定的元素,你可以使用'x.style.left'。 – duri

回答

34

工作,確保你定義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

我解決了我的問題,使用jquery。例如要獲取您可以使用的元素的ID:

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

此解決方案也可以在Firefox瀏覽器中使用。當啓動​​動作時,它將event屬性設置爲像這樣的全局變量。

var keyEvent=null; 

分配該event屬性keyEvent.item是目標元素。

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

       keyEvent=e;          

     },this)) 

then。在您的代碼中使用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全局變量。