2011-09-17 23 views
13
var x = event.target||event.srcElement; 
document.getElementById(x.id).style.left = 200 + "px" ; 
document.getElementById(x.id).style.top = 100 + "px" ; 

Google क्रोम और आईई पर ठीक काम करता है लेकिन फ़ायरफ़ॉक्स पर नहीं। इसे Google पर आज़माएं। google event.srcElement (IE पर काम करता है लेकिन फ़ायरफ़ॉक्स पर नहीं) इसलिए मैंने event.target जोड़ा है लेकिन अभी भी काम नहीं कर रहा है। क्या फ़ायरफ़ॉक्स पर काम करने के लिए मुझे और बदलाव करने की ज़रूरत है? जिस तरह से मैं फ़ायरफ़ॉक्स के 3.5 संस्करण का उपयोग कर रहा हूँ।event.target फ़ायरफ़ॉक्स पर काम नहीं कर रहा है

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

कृपया मेरी मदद यह फ़ायरफ़ॉक्स

+0

क्या आप http://jsfiddle.net/ या http://jsbin.com/ पूर्ण कोड का उदाहरण बना सकते हैं जो "काम नहीं करता"? –

+0

क्या आप कृपया अधिक कोड दिखा सकते हैं (आदर्श रूप से एक जेएसफ़ील्ड डेमो)? बीटीडब्लू, 'x'' आईडी आईडी को देखने की कोई ज़रूरत नहीं है और फिर 'आईडी' द्वारा विशेष तत्व के लिए वापस देखें, आप बस '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 का उपयोग करके मेरी समस्या हल की। उदाहरण के लिए आप तत्व का आईडी प्राप्त करने के लिए उपयोग कर सकते हैं:

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

फ़ायरफ़ॉक्स ब्राउज़र में भी काम करने का यह समाधान। keydown कार्रवाई शुरू करते समय इसके बाद event संपत्ति को इस तरह के वैश्विक चर पर सेट करें।

var keyEvent=null; 

असाइन कि keyEvent और .item करने के लिए event संपत्ति लक्ष्य तत्व है।

$(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" ; 
     } 

नोट: window के वैश्विक चर को event गुण सेट करने के लिए कोशिश मत करो।

संबंधित मुद्दे