6

मैं एक img तत्व unselectable और undraggable क्योंकि मैं एक खिड़की के रूप में यह उपयोग कर रहा हूँ नियंत्रण का आकार बदलना (क्लिक करके और आसपास के div पर खींच बनाना चाहते एक खिड़की का आकार बदलता है)।.ondragstart .addEventListener के बराबर नहीं ("dragstart"

यह निम्नलिखित के रूप में पूरी तरह से ठीक काम करता है: (। 3,6 *)

noSelect[x].ondragstart = function() {return false}; 

लेकिन इस के बाद से एक फ़ायरफ़ॉक्स में उपयोग किया जाएगा विस्तार है जो हर HTMLElement के चारों ओर एक XPCNativeWrapper का उपयोग करता है, मैं ".onsdragstart" का उपयोग नहीं कर सकते हैं और करने के लिए है ".addEventListener" का उपयोग करें

समस्या उपरोक्त कोड के बराबर है काम नहीं कर रहा है। क्लिक करके और खींच img ट्रिगर फ़ायरफ़ॉक्स के डिफ़ॉल्ट छवि खींचने के बजाय निम्नलिखित में मेरी विंडो का आकार:

noSelect[x].addEventListener("dragstart", function() {return false}, false) 

कोड की दो पंक्तियाँ बराबर नहीं ऊपर उद्धृत कर रहे हैं?

unselectable वस्तुओं के लिए पूर्ण संदर्भ:

var noSelect = document.getElementsByClassName("noSelect") 
    for (x in noSelect) { 
     if (x == "length") 
      break 
     noSelect[x].unselectable = "on"; 
     noSelect[x].onselectstart = function(){return false}; 
     noSelect[x].ondragstart = function() {return false}; 
     noSelect[x].style.userSelect = "none"; // w3c standard 
     noSelect[x].style.MozUserSelect = "none"; // Firefox 
    } 

उत्तर

1
  1. ondragstart एक IE-केवल घटना, है कि क्यों यह फ़ायरफ़ॉक्स में फायरिंग नहीं है। अद्यतन: यह इस तुलना में अधिक जटिल है, यहाँ और अधिक पढ़: Javascript ondrag, ondragstart, ondragend
  2. अगर ondragstart एफएफ में उपलब्ध थे, आप इसके साथ x.ondragstart = ... पकड़ सकता है, यह एफएफ भी काम करता है।
  3. addEventListener ईवेंट हैंडलर को असाइन करने का एक अच्छा तरीका है, यह आपको एक तत्व के लिए एक से अधिक हैंडलर संलग्न करने की अनुमति देता है। आईई में attachEvent नामक एक सूफ़-समकक्ष है।

आपकी समस्या के बारे में: गैर-आईई ब्राउज़र में, ऑब्जेक्ट को अचयनित करने के लिए, आपको ऑनमोस्डउन ईवेंट को पकड़ना और डिफ़ॉल्ट व्यवहार को रोकना होगा।

+0

1. घटना दोनों मामलों में आग लगती है। मैंने समारोह में एक चेतावनी डाली और यह आग लग गई। 2. http://help.dottoro.com/ljpncnwi.php ondragstart के अनुसार एफएफ में उपलब्ध है। लेकिन मैं XDCNativeWrapper की वजह से x.ondragstart = का उपयोग नहीं कर सकता। 3. यदि addEventListener सिर्फ अच्छा है, तो ".addrventstart" के साथ ".ondragstart" को प्रतिस्थापित करने से अलग व्यवहार क्यों प्रदर्शित होते हैं? यह अभी भी आग लग रहा है, लेकिन एफएफ के डिफ़ॉल्ट ड्रैगिंग को ओवरराइड नहीं करता है जैसे .ondragstart करता है। – TinyTimZamboni

+0

मूसडॉउन – kapa

1

मुझे नहीं पता कि क्यों function() { return false; } काम नहीं करता है, लेकिन मुझे पता है कि function(event) { event.preventDefault(); } फ़ायरफ़ॉक्स में काम करेगा।

5

addEventListener EventListener पंजीकृत करता है, जिसमें कोई विशेष रिटर्न कोड उपचार नहीं होता है।

सबसे on* ईवेंट हैंडलर्स cancels the event per the HTML spec से झूठी लौटने के बाद नियमित रूप से EventListener में इस event.preventDefault() बुला के रूप में नील अपने जवाब में बताया गया द्वारा हासिल की है।

+0

पकड़ने के साथ डिफ़ॉल्ट व्यवहार को रोका जा सकता है यह वह उत्तर है जिसे मैं स्वीकार करना चाहता हूं, लेकिन यह प्रोजेक्ट थोड़ी देर पहले था और मैं इसे वापस जाना चाहता हूं और इसे पहले सत्यापित करना चाहता हूं। – TinyTimZamboni

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