2012-10-12 33 views
5

अजीब व्यवहार और iOS6 में गैर कामकाज घटना प्रतिनिधिमंडल का अनुभव, जड़ जिनमें से है कि अगर मैं बस document.body के लिए एक ईवेंट हैंडलर, के रूप में तो देते है:दस्तावेज़ से जुड़ी घटना श्रोताओं पर क्लिक करें। आईओएस 6 में आग नहीं है?

document.body.addEventListener("click", function(){alert("ios6 sucks")}, false); 

यह does not को चलाने के लिए, उदाहरण के लिए अगर मैं google.com पर जाएं और सफारी रिमोट वेबिनस्पेक्टर के माध्यम से जोड़ें। कुछ मामलों में यह चलाएगा, जिसमें मैं पृष्ठ पर किसी लिंक पर क्लिक करता हूं, या यदि उस तत्व पर क्लिक करना जिसमें ईवेंट हैंडलर सीधे उससे जुड़ा हुआ है। प्रमुख ब्राउज़र में और आईओएस 5 और 4 में ठीक काम करता है। शरीर में टचेंंड जोड़ना ट्रिगर होगा क्योंकि यह एक संभावित कामकाज होना चाहिए और यह वास्तव में बेहतर है कि ब्राउज़र को टचस्टार्ट में कुछ क्लिक पहचानने के बजाय क्लिक का पता लगाने दें/touchend। मैं सोच रहा हूं कि यह आईओएस 6 बग है या नहीं। लेकिन मैंने देखा है कि किसी और ने अभी तक इसके बारे में शिकायत की है।

+0

मेरे निष्कर्षों के बाद, यदि मैं एक क्लिक हैंडलर को एक div में संलग्न करता हूं जो शरीर के सीधे बच्चे के रूप में अकेले बैठता है, तो पूरे पृष्ठ को लपेटता है, तो यह काम करेगा। और एक साइड इफेक्ट के रूप में, जो शरीर को इवेंट ट्रिगर पर भी क्लिक करेगा ... यदि बच्चे div से कोई घटना संलग्न नहीं है, तो पहले कोई भी घटना शरीर पर ट्रिगर नहीं करती है। – bonklers

उत्तर

0

@ बोंकर्स ... संदर्भ घटना को संलग्न करने के बाद शरीर पर क्लिक ट्रिगर होने पर संदर्भित होता है पूरी तरह से घटना बुलबुले के कारण होता है।

मैं दोहराया यहाँ कोड दिखा रहा है कि यह div पर दो बार फोन किया जाता है लेकिन केवल एक बार शरीर पर:

<div id="myDiv">FlackAttack Test</div> 

<script> 
document.body.addEventListener("click", function(){alert("ios6 sucks")}, false); 
document.getElementById('myDiv').addEventListener('click', function(){alert("ios6 sucks twice")},  false); 
</script> 

आप बुदबुदाती से घटना को रोकने के लिए चाहते हैं तो आपके e.stopPropagation कह सकते हैं() ; या e.cancelBubble = सत्य;

+0

हां, जो ठीक है लेकिन यह बग नहीं है, बग यह है कि शरीर से जुड़ा श्रोता प्रतिक्रिया नहीं करता है। जबकि आईओएस 5 में यह करता है। – bonklers