2014-07-10 8 views
11

मैंने देखा है कि क्रोम में (मैं क्रोम 35.0.1916.114 [अद्यतन का उपयोग कर रहा हूं: "35.0.1916.153 मीटर"], विंडोज 7 64-बिट में भी होता है) जब मैं बाएं बटन पर क्लिक करता हूं न केवल माउसडाउन है घटना उठाई (जैसा कि मैं उम्मीद करता हूं) लेकिन एक माउसमोव भी।क्रोम mousedown पर एक mousemove क्यों उठाता है?

this fiddle में यदि आप इनपुट तत्व में क्लिक करते हैं तो आपको प्रत्येक माउसडाउन ईवेंट के लिए 'डी' और प्रत्येक माउसमोव के लिए 'एम' दिखाई देगा।

HTML:

<input id="txt" type="text"/> 
<p>Moves</p><p id="moves">0</p> 
<p>Downs</p><p id="downs">0</p> 
<p id="activity">Activity</p> 

जे एस:

$("#txt").mousedown(function() { 
    document.getElementById("activity").innerHTML +="D"; 
    update(false,true); 
}); 
$("#txt").mousemove(function() { 
    document.getElementById("activity").innerHTML +="M"; 
    update(true,false); 
}); 

function update(move, down) 
{ 
    var moves=document.getElementById("moves").innerHTML; 
    if (move) 
    { 
     moves ++; 
     document.getElementById("moves").innerHTML=moves; 
    } 

    var downs=document.getElementById("downs").innerHTML; 
    if (down) 
    { 
     downs ++; 
     document.getElementById("downs").innerHTML=downs; 
    } 
    var d=parseInt(downs); 
    var m=parseInt(moves); 
    if ((d+m)%25==0) 
    { 
     document.getElementById("activity").innerHTML +="<br>"; 
    } 
} 

एफएफ में और IE11 एक बार कर्सर इनपुट तत्व में है, तो आप लगातार 'D के (यानी, एक क्लिक उठाता प्राप्त करने में सक्षम हो जाएगा एक माउसडाउन घटना)। क्रोम में प्रत्येक माउस क्लिक एक माउसडाउन और दो माउसमोव घटनाओं को उठाता है।

यह माउस के किसी भी मामूली झुकाव के कारण नहीं है क्योंकि मैं ट्रैकबॉल का उपयोग करता हूं ताकि कर्सर पूरी तरह स्थिर हो।

क्या किसी के लिए इसके कामकाज के बारे में पता है?

धन्यवाद डेव

+0

शायद क्रोम माउस बटन को निराश करने पर विचार करता है एक "आंदोलन" चूंकि आप माउस बटन और माउस स्विच ले जा रहे हैं ... ... ... कभी भी ध्यान न दें। – BoltClock

+0

क्रोम के मेरे संस्करण में नहीं होता है: 35.0.1916.153 (आधिकारिक बिल्ड 274914) लिनक्स –

+0

@RobbyCornelissen पर मैं "35.0.1916.153 मीटर" पर हूं और यह ऊपर वर्णित जैसा होता है। मेरा सहयोगी एक ही संस्करण पर है और माउस का उपयोग करते समय (एक ट्रैकबॉल नहीं) प्रत्येक माउसडाउन के साथ एक (दो नहीं) माउसमोव होता है। आप किस इनपुट डिवाइस का उपयोग कर रहे हैं? – Badgerspot

उत्तर

4

अजीब मुद्दा वास्तव में, हालांकि एक छोटे ध्वज के साथ इस धोखा दिया जा सकता: http://jsfiddle.net/3a28p7ek/

परिवर्तन बहुत सीधे आगे, नीचे प्रत्येक माउस पर true को ignoreNextMove स्थापित करने और इस कदम हैंडलर रद्द है यदि यह ध्वज सेट किया गया है, तो ध्वज को रीसेट करने के बाद ताकि नियमित चालान घटनाओं को ठीक से संभाला जा सके:

ignoreNextMove = false; 

$("#txt").mousedown(function() { 
    ignoreNextMove = true; 
    document.getElementById("activity").innerHTML +="D";  
    update(false,true); 
}); 
$("#txt").mousemove(function() { 
     if(ignoreNextMove) 
    { 
     ignoreNextMove = false; 
     return; 
    } 
    document.getElementById("activity").innerHTML +="M"; 
    update(true,false); 
}); 
+1

काम करना चाहिए, लेकिन मुझे एक ऐसा उत्तर खोजने की उम्मीद है जो अधिक संतोषजनक है – Mephiztopheles

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