2012-02-17 22 views
7

मुझे पता चला कि जावास्क्रिप्ट फोकस और ब्लर इवेंट विंडो, दस्तावेज़ या बॉडी से जुड़े होने पर एंड्रॉइड ब्राउज़र पर सही ढंग से नहीं चलते हैं।विंडो फोकस और धुंध घटनाएं एंड्रॉइड ब्राउज़र पर सही ढंग से काम नहीं कर रही हैं

मैं एक साधारण परीक्षण स्क्रिप्ट जो डेस्कटॉप ब्राउज़र पर सही ढंग से काम कर रहा है worte, लेकिन एंड्रॉयड स्टॉक ब्राउज़र, डॉल्फिन, और ओपेरा मोबाइल पर विफल रहता है:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" /> 
    <title>Focus test</title> 

    <script type="text/javascript"> 

     window.onfocus = function() { 
      document.getElementById('console').innerHTML += '<div>Focus event handler fired.</div>'; 
     }; 
     window.onblur = function() { 
      document.getElementById('console').innerHTML += '<div>Blur event handler fired.</div>'; 
     }; 

    </script> 
</head> 

<body> 
    <input id="test" name="test" /> 
    <div id="console"></div> 
</body> 

</html> 

intresting है, कि यदि प्रपत्र इनपुट हो रही है ध्यान, घटना हैंडलर आग, और धुंध पर, धुंध घटना हैंडलर दो बार आग लगती है।

क्या किसी के पास इसके लिए कोई अच्छा समाधान या समाधान है?

संपादित करें: अपेक्षित परिणाम यह होगा कि यदि मैं ब्राउज़र टैब बदलता हूं, या किसी अन्य ऐप में बदल जाता हूं, तो धुंधला ईवेंट आग लगाना चाहिए, और यदि मैं ब्राउज़र टैब पर वापस जाता हूं, तो फ़ोकस ईवेंट को आग लगनी चाहिए (इस तरह यह डेस्कटॉप पर काम करता है)

+0

क्या आपने jQuery की कोशिश की है? यह घटनाओं का बहुत सामान्यीकरण करता है ताकि वे विभिन्न ब्राउज़रों में अधिक सुसंगत हों। – Walf

+0

हां, मैंने jQuery के साथ शुरुआत की, मैंने अंतिम jQuery बग को बाहर करने के लिए, उदाहरण को सादा जावास्क्रिप्ट पर नीचे फिसल दिया। – dioslaska

+0

एंड्रॉइड ब्राउज़र पर आपके उदाहरण का अपेक्षित परिणाम क्या है? – Uooo

उत्तर

0

मैंने गैलेक्सी नेक्सस चलाने वाले जैलीबीन (मेरे पास सभी) पर आपके कोड का परीक्षण किया है और यह कोड सही काम करता है, और दोनों घटनाएं केवल एक बार आग लगती हैं।

document.getElementById('test').onfocus = function() { 
    document.getElementById('console').innerHTML += '<div>Focus event handler fired.</div>'; 
}; 
document.getElementById('test').onblur = function() { 
    document.getElementById('console').innerHTML += '<div>Blur event handler fired.</div>'; 
};​ 

हो सकता है कि आप खिड़की है, जो सबसे मोबाइल उपकरणों पर, सामान्य रूप से "धुंधला" नहीं हो सकता है प्रति-से लक्षित कर रहे थे। सुनिश्चित करें कि आप सीधे अपने धुंध की रिपोर्ट करने और घटनाओं पर ध्यान केंद्रित करने के लिए तत्व से पूछें।

संपादित करें: साथ ही, सुनिश्चित करें कि आप ईवेंट श्रोताओं को लागू करने से पहले डीओएम तैयार होने की प्रतीक्षा कर रहे हैं।

+1

मुझे पता है कि यह दस्तावेज़ तत्वों पर काम करता है, लेकिन मैं विशेष रूप से विंडो तत्व पर उपयोग करना चाहता था। अपेक्षित परिणाम यह होगा कि यदि मैं एक ब्राउज़र टैब बदलता हूं, या किसी अन्य ऐप में बदल जाता हूं, तो धुंधला ईवेंट आग लगाना चाहिए, और यदि मैं ब्राउज़र टैब पर वापस जाता हूं, तो फ़ोकस ईवेंट को आग लगनी चाहिए (इस तरह यह डेस्कटॉप पर काम करता है) – dioslaska

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