10

मैं अद्यतन करने कर रहा हूँ/डिबगिंग और मेरे खींचने योग्य स्क्रिप्ट की क्षमताओं के विस्तार और मैं निम्नलिखित परिणाम प्राप्त करने में सक्षम होना चाहिए: मैं कोई लाभ नहीं हुआ अनुसंधान के एक बहुत किया है लेकिन,मैं mousedown पर एक राइटमाउस बटन घटना का पता कैसे लगा सकता हूं?

whatever.onRightMouseButtonMousedown = preventDefault(); 

, मैं जानता हूँ कि ऐसा करना संभव है क्योंकि जब मैं jquery-ui draggable का उपयोग करता हूं, तो यह सही माउस बटन के साथ mousedown जब तत्वों को खींचने की क्षमता को रोकता है। मैं इस क्षमता की नकल करना चाहता हूं, और सीखता हूं कि यह कैसे काम करता है ताकि मैं इसे और भविष्य में आवश्यकतानुसार कार्यान्वित कर सकूं।

नोट: कृपया मुझे jquery या jquery-ui draggable (मैं पहले से ही परिचित हूं) का उपयोग करने के बारे में जानकारी न दें, मैं सीखना चाहता हूं कि उन्होंने कैसे कार्यान्वित किया, या यह पता लगाने के लिए कैसे संभव है सही माउस बटन वाला एक मूसडाउन ताकि मैं तत्वों को दाहिने माउस बटन से ड्रैग होने से रोक सकूं।

+0

यह डुप्लिकेट नहीं है। प्रश्न विशेष रूप से पूछ रहा है कि jQuery का उपयोग किये बिना इसे कैसे किया जाए। – person0

उत्तर

17

आम तौर पर जब आपके पास कोई भी माउस ईवेंट होता है, तो आप इसे केवल एक प्रकार के माउस क्लिक पर संचालित करना चाहते हैं। इसलिए, आपके कॉलबैक में दी गई घटनाओं में एक संपत्ति होती है जो आपको क्लिक के प्रकारों के बीच अंतर करने की अनुमति देती है।

यह डेटा बटन ईवेंट डेटा की संपत्ति के माध्यम से वापस भेज दिया गया है। MDN देखें कि कौन से मूल्य डेटा का प्रतिनिधित्व करते हैं।

इसलिए, आप दायाँ क्लिक अक्षम नहीं करते हैं, बल्कि आप बाएं क्लिक के लिए केवल अपनी कार्यक्षमता को सक्षम करते हैं।

element.onmousedown = function(eventData) { 
    if (eventData.button === 1) { 
     alert("From JS: the (left?) button is down!") 
    } 
} 

jQuery में बराबर है:

$("div").mousedown(function(eventData) { 
    if (eventData.which === 1) { 
     alert("From JQuery: which=" + de.which) 
    } 
}); 

ध्यान दें कि अगर आप jQuery का उपयोग नहीं करते, मूल्यों लौटे ब्राउज़रों में अलग होगा यहाँ एक [गरीब] उदाहरण दिया गया है। jQuery unifies the values across browsers,, के लिए छोड़ दिया बीच के लिए 2, 3 के अधिकार के लिए 1 का उपयोग कर:

element.onmousedown = function(eventData) { 
 
    if (eventData.button === 0) { 
 
    console.log("From JS: the (left?) button is down!") 
 
    } 
 
} 
 

 
$("#element").ready(function() { 
 
    $("div").mousedown(function(de) { 
 
    console.log("From JQuery: which=" + de.which); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="element" style="width: 100px; height: 100px; background-color: blue" />

+1

धन्यवाद, मैं वास्तव में आपकी टिप्पणी देखने के लिए वापस आने से पहले इसे पहले ही समझ चुका हूं, मैं बस इसे ब्राउज़रों (कम से कम आधुनिक ब्राउज़र) पर काम करने के लिए जोड़ दूंगा, आपको बस 'event.which' और 'ईवेंट' की जांच करने की आवश्यकता है .button', इस तरह मैंने इसे हल करने का अंत किया: 'if (evt.which === 3 || evt.button === 2) {evt.preventDefault();' – person0

3

यह बहुत आसान नहीं है। Quirksmode.org में article about event properties है।

'कौन सा माउस बटन क्लिक किया गया है' के अंतर्गत देखो?/'दाएँ क्लिक करें'। यह ब्राउज़र द्वारा बदलता है।

+6

मुझे पता है कि यह थोड़ी देर पहले से है, लेकिन मैंने उस लिंक पर क्लिक किया और लाइन को देखा "यहां तक ​​कि एक्सप्लोरर 6 अभी तक इसका समर्थन नहीं करता है" जिसका अर्थ है कि यह आलेख अनुवांशिक है। –

3

एचटीएमएल:

<a href="#" onmousedown="mouseDown(event);">aaa</a>​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

जावास्क्रिप्ट:

function mouseDown(e) { 
    e = e || window.event; 
    switch (e.which) { 
    case 1: alert('left'); break; 
    case 2: alert('middle'); break; 
    case 3: alert('right'); break; 
    } 
}​ 

demo

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