6

के बाद JQueryMobile 1.3.2 में पॉपअप विफल हो गया है क्या नवीनतम क्रोम संस्करण "43.0.2357.65 मीटर" टूटा हुआ JQueryMobile 1.3.2 किसी और के लिए है? जब मैं एक पॉपअप पर क्लिक करता हूं तो यह पृष्ठ के शीर्ष पर जाता है और स्क्रॉल बार गायब हो जाता है। यह पिछले संस्करण में ठीक था।अद्यतन क्रोम संस्करण 43.0.2357.65 मीटर

समस्या मेरी applicaiton को प्रभावित करने वाले लेकिन jquerymobile डेमो पृष्ठों पर reproduceable है:

  1. क्रोम 43.0.2357.65 मीटर का उपयोग पर "पॉपअप पेज पर क्लिक करने पर पॉपअप
  2. पर करने के लिए http://demos.jquerymobile.com/1.3.2/
  3. क्लिक जाना पृष्ठ पर आधे रास्ते बटन "साइन इन करें।
  4. यह पृष्ठ के शीर्ष पर जाएगा और स्क्रॉलबार गायब हो जाएगा।

नोट यह हर बार नहीं होता है - यदि आप इसे फिर से प्रयास करते हैं तो यह काम कर सकता है, लेकिन यदि आप ताजा टैब से चरणों को शुरू करते हैं तो यह लगातार होता है।

मैंने क्रोम के साथ कोई समस्या उठाई है, लेकिन सिर्फ यह सोचकर कि क्या कोई जानता है कि क्या हो रहा है और यदि कोई कामकाज है तो मैं इसे कार्यान्वित कर सकता हूं।

धन्यवाद!

+0

मैं 1.2.0 के साथ एक पुराने ऐप में विशेष रूप से पेज संक्रमण के आसपास मुद्दों को भी देख रहा हूं। – Lee

+0

मैं 1.2.x के साथ पुराने ऐप में पृष्ठ संक्रमण समस्याएं भी देख रहा हूं - कंसोल में कोई त्रुटि नहीं है लेकिन संक्रमण के बाद पूरा पृष्ठ सफेद हो जाता है। हमने इसे एक कामकाज के रूप में हटा दिया। – embee

उत्तर

10

पॉपअप अजीब यह दोहराने के लिए मुश्किल है हो रहा है का सामना कर रहा हूँ - नीचे दिए गए सटीक लिंक पर जाकर और "साइन इन" बटन पर क्लिक करने से व्यवहार की गारंटी मिलती है। http://demos.jquerymobile.com/1.3.2/widgets/popup/#&ui-state=dialog

मेरा मानना ​​है कि नीचे दिया गया समाधान संबंधित हो सकता है, यह स्लाइड संक्रमण के साथ अन्य मजेदार मुद्दों को हल करता है। (पॉपअप के साथ केवल सीमित परीक्षण) लेकिन

नीचे कोड स्निपेट के साथ अपमानजनक फ़ंक्शन को ओवरराइड करना प्रतीत होता है। से पहले आपको jquerymobile js लोड इस कॉल करनी होगी

// Override of $.fn.animationComplete muse be called before initialise jquery mobile js 
 
    $(document).bind('mobileinit', function() { 
 
    $.fn.animationComplete = function(callback) { 
 
     if ($.support.cssTransitions) { 
 
     var superfy= "WebKitTransitionEvent" in window ? "webkitAnimationEnd" : "animationend"; 
 
     return $(this).one(superfy, callback); 
 
     } else { 
 

 
     setTimeout(callback, 0); 
 
     return $(this); 
 
     } 
 
    }; 
 

 
    })

पृष्ठभूमि: jquerymobile 1.3.2 jQuery एक() ईवेंट हैंडलर लगाव को लागू करता है कुछ हद तक गलत तरीके से।

.one() - "तत्वों के लिए एक घटना के लिए कोई हैंडलर संलग्न हैंडलर निष्पादित किया जाता है से अधिक एक बार घटना प्रकार प्रति तत्व प्रति।।": घटना आग अनिवार्य रूप से और उसके बाद निकाल दिया जाता है: http://api.jquery.com/category/events/

हालांकि बुला दोनों ("webkitAnimationEnd और animationend")एक का उपयोग कर() संभावित मतलब यह होगा कि केवल 1 (ब्राउज़र के आधार पर) दो संचालकों की कभी अन्य छोड़ने के सक्रिय होने पर भी रहना और संभावित मेमोरी लीक कारण ।

क्रोम 43 वेबकिटएनीमेशन एंड एनीमेशन दोनों को संभालता है - हालांकि किसी भी समय केवल एक ही। यह दूसरे को छोड़ देता है और तत्व पर अगली बार एनीमेशन बंद होता है।

+1

यह मेरे लिए तय है। बहुत बहुत धन्यवाद Superfy। वास्तव में आपकी मदद की सराहना की। – icewhite

0

मेरे लिए एक कामकाज के रूप में, यदि आप jQueryMobile API का उपयोग करते हैं तो ऐसा लगता है।

$('selector').popup('open'); 

बजाय jquerymobile मार्कअप पर भरोसा करने की

मेरे क्रोम संस्करण "43.0.2357.81 मीटर" है और मैं यह भी

+0

सुझाव के लिए धन्यवाद, लेकिन दुर्भाग्य से मेरा ऐप पॉपअप को खोलने और बंद करने के लिए पहले ही एपीआई का उपयोग करता है, और यह समस्या को देख रहा है। – icewhite

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