6

कम करने का कारण बनता है ठीक है, यह अब तक का सबसे अजीब बग है जिसे मैंने कभी सामना किया है। हालांकि यह काफी सरल है। यदि मैं इंटरनेट एक्सप्लोरर के किसी भी संस्करण में jQuery और फिर jQuery मोबाइल गतिशील रूप से लोड करता हूं, तो वास्तविक आईई विंडो को कम करता है। यह आईईएस्टर के माध्यम से आईई के सभी संस्करणों में होता है, हालांकि, यदि मैं आईई 9 में पूर्ण संस्करण चलाता हूं, तो यह संगतता मोड को मारता है और किसी कारण से कम नहीं होता है।गतिशील रूप से jQuery मोबाइल लोड करने से आईई को

मैंने स्क्रिप्ट लोड करने के विभिन्न तरीकों (उदाहरण कोड में टिप्पणी की) की कोशिश की है, जिसके परिणामस्वरूप सभी एक ही व्यवहार में हैं।

ऐसा क्यों हो रहा है? क्या इसके आसपास कोई रास्ता है?

http://jsfiddle.net/Xeon06/RCsuH/

+0

मैं पुष्टि कर सकता हूं कि मैं यह एक सादे वीएम पर आईई 7 में होता हूं। विशेष रूप से, विंडो * न्यूनतम * नहीं है - इसे स्टैक के नीचे भेजा जाता है (अन्य विंडो को कम करें और आपको अपनी आईई विंडो अभी भी खुल जाएगी), जो कहीं भी 'window.blur()' कहलाती है। (मेरे आईई 9 पर, यह न तो न्यूनतम/ब्लर्स को कम करता है और न ही संगतता मोड में जाता है।) – josh3736

उत्तर

3

यह jQuery मोबाइल में known issue है। अपमानजनक रेखा jquery.mobile.navigation.js:913 है।

// Kill the keyboard. 
// XXX_jblas: We need to stop crawling the entire document to kill focus. Instead, 
//   we should be tracking focus with a live() handler so we already have 
//   the element in hand at this point. 
// Wrap this in a try/catch block since IE9 throw "Unspecified error" if document.activeElement 
// is undefined when we are in an IFrame. 
try { 
    $(document.activeElement || "").add("input:focus, textarea:focus, select:focus").blur(); 
} catch(e) {} 

blur() करने के लिए कॉल कि ढेर के पीछे से IE विंडो भेज रहा है नहीं है।

वर्कअराउंड के रूप में, आप HTML के <head> में स्क्रिप्ट टैग भौतिक रूप से डालकर इससे बच सकते हैं।

<!DOCTYPE HTML> 
<html> 
    <head> 
    <link rel="stylesheet" href="http://code.jquery.com/mobile/latest/jquery.mobile.css" /> 
    <script src="http://code.jquery.com/jquery-1.6.2.js"></script> 
    <script src="http://code.jquery.com/mobile/latest/jquery.mobile.js"></script> 

... 

दस्तावेज़ में कहीं और स्क्रिप्ट टैग रखने या स्क्रिप्ट के माध्यम से उन्हें डालने से बग ट्रिगर होता है।

This Fiddle कार्रवाई में कार्यवाही को demostrates। ध्यान दें कि यह केवल शीर्ष-स्तरीय दस्तावेज़ में काम करता है। यदि दस्तावेज़ में है, तो बग अभी भी दिखाई देगा। इस प्रकार, यदि आप IE 7/8 में JSFiddle संपादक खोलते हैं, तो यह अभी भी वापस भेजा जाएगा; लेकिन अगर आप केवल rendered HTML खोलते हैं, तो यह नहीं होगा।

1

यह "फिक्सिंग" पर मेरे प्रयास: http://jsfiddle.net/RCsuH/6/

@ josh3736 लगभग बिल्कुल सही था, कोड में कहीं यह एक document.body.blur() जो खिड़की के न्यूनीकरण का कारण बनता है बंद फायरिंग कर रहा है।

मेरा फ़िक्स बस उस फ़ंक्शन को नो-ऑप फ़ंक्शन के साथ बदल देता है। जब वे लोडिंग समाप्त करते हैं तो स्क्रिप्ट टैग को ऑनलोड लोड करने में असमर्थ था, इसलिए फ़ंक्शन को बदलना (यदि आवश्यक हो) आपको छोड़ दिया गया है।

हालांकि यह सब jQuery मोबाइल लाइब्रेरी में एक बग प्रतीत होता है, और इस प्रकार आपको शायद उनके साथ एक बग रिपोर्ट दर्ज करनी चाहिए। हालांकि, मुझे यकीन नहीं है कि इससे उन्हें बहुत परेशान होगा कि आईई पर मोबाइल फोन/टैबलेट के लिए एक ढांचे के लिए एक बग है।

नोट: यह भयानक, भयानक कोड है जो देशी कार्यों को प्रतिस्थापित करता है। यदि यह संभव है, तो इसका उपयोग न करें।

+0

* "मुझे यकीन नहीं है कि इससे उन्हें बहुत परेशान होगा कि मोबाइल फोन/टैबलेट के लिए एक ढांचे के लिए आईई पर एक बग है "* आईई * मोबाइल फोन/टैबलेट पर है, और नए विंडोज 8 टैबलेट आने के साथ, यह आईई 9/10 होगा।मेरी साइट उपयोगकर्ता को मोबाइल पेज बनाने देती है, और * पूर्वावलोकन * इसके लिए उनके मोबाइल पेज के वास्तविक पृष्ठ HTML/CSS/JS का उपयोग करती है (यह स्पष्ट कारणों के लिए एक अच्छा विचार है, दाएं)। यह आईई 9 में टूटता है। – Mud

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