2014-05-02 4 views
6

परिदृश्य: जावास्क्रिप्ट फ़ील्ड सत्यापन के हिस्से के रूप में ऑनब्लू (या बदले) पर चेतावनी संदेश प्रदर्शित करें। onBlur साथजावास्क्रिप्ट - माउस क्लिक द्वारा फ़ायरफ़ॉक्स व्यवहार धुंधला। बग?

उपयोगकर्ता कार्रवाई:
1) इनपुट
2 के अंदर क्लिक करें) चेतावनी संदेश इनपुट
3) बंद बाहर क्लिक करें
4) इस कदम माउस के आसपास

परिणाम:mousedown उस स्थिति पर किया जाता है जहां आपने अलर्ट आने से पहले क्लिक किया था - जब आप माउस को चारों ओर ले जाते हैं तो पेज पर तत्व चुने जाते हैं।
नोट: यह तब नहीं होता जब इनपुट से टैबबिंग हो।

डेमो:
फ़ायरफ़ॉक्स 28 और 29 प्लेटफार्म:: विंडोज 7 & 8 और OSX मावेरिक्स (4 विभिन्न मशीनों)http://jsfiddle.net/s9sc4/

<body> 
Click inside the input and then outside of it. 
<input type="text" onblur="alert('Close this alert message and move the mouse around.');" /> 
TEST TEST TEST 
</body> 

पर पुन: निर्मित।
एक स्वच्छ फ़ायरफ़ॉक्स प्रोफाइल का उपयोग करने से कोई फर्क नहीं पड़ता।

प्रश्न: क्या यह एक बग, या डिफ़ॉल्ट व्यवहार है? क्रोम, सफारी और आईई इस तरह व्यवहार नहीं करते हैं।
यदि यह डिज़ाइन किया गया है, तो क्या मुझे रोकथाम के साथ कुछ करने की आवश्यकता है या इस व्यवहार को रोकने के लिए अलर्ट के बाद प्रचार/रोकना बंद करना है?

उत्तर

3

आप जोड़ने की कोशिश कर सकते हैं:

window.getSelection().removeAllRanges(); 

यह आपकी समस्या का समाधान होगा।

अपने प्रश्न का उत्तर देने के लिए: यह फ़ायरफ़ॉक्स के a bug प्रतीत होता है और एक कार्यवाही की आवश्यकता है। क्या होता है फ़ायरफ़ॉक्स ने घटनाओं की प्राथमिकता को गड़बड़ कर दिया है जहां focusonblur से पहले सेट किया गया है। ब्राउजर जिनके पास बग नहीं है, वे ऑनब्लर होने पर फोकस ईवेंट नहीं फेंकेंगे।

DEMO

+0

धन्यवाद - यह मेरे अनुप्रयोगों के लिए काम करना चाहिए। मुझे आश्चर्य है कि क्यों मोज़िला इस तरह की बुनियादी चीजों को ठीक करने के लिए उच्च प्राथमिकता नहीं देता है। –

+1

मुझे वास्तव में आपके द्वारा लिंक की गई बग का लिंक दिखाई नहीं देता है, लेकिन मैंने इसे एक नई बग के रूप में सबमिट किया है, जिसकी पुष्टि हुई है: https://bugzilla.mozilla.org/show_bug.cgi?id=1005606 यह बैकलॉग है दुर्भाग्यवश ... –

+2

'फोकस' मुद्दों के बारे में बग वार्ता के बाद से यह थोड़ा अप्रत्यक्ष है। हालांकि यह इस विशेष मुद्दे (imho) के लिए मूल कारण है। कुछ और खोजने के बाद मुझे [इसी तरह के मुद्दे] (https://bugzilla.mozilla.org/show_bug.cgi?id=53579) 2000 में वापस डेटिंग करने के बाद मिला और उन्हें सभी को एक ही कामकाज की आवश्यकता है।यह एक अच्छी बात है जिसे वे मानते हैं मुझे लगता है। –

2

यह दिलचस्प है। यह एक बग की तरह लगता है। मैं मिला चारों ओर यह setTimeout कॉल कर रहे हैं, और फिर बुला alert:

<input ... onblur="setTimeout(function() { alert(...); }, 0);"> 
+0

आपको बहुत बहुत धन्यवाद। यह वास्तव में कारगर है। – whitesiroi

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