2009-11-01 14 views
5

मेरे पास एक jQuery संवाद है जिसका सामग्री आईफ्रेम द्वारा परिभाषित किया गया है। जब तक संवाद प्रदर्शित नहीं होता है, तब तक इस आईफ्रेम की सामग्री अदृश्य है। आईई में, यह सामग्री और इसकी संबंधित जावास्क्रिप्ट निष्पादित हो रही है, ताकि जब संवाद प्रदर्शित होता है, यह स्पष्ट है कि जावास्क्रिप्ट पहले से ही अपने सभी लोडिंग कार्य को पूरा कर चुका है। लेकिन फ़ायरफ़ॉक्स और क्रोम जैसे गैर-आईई ब्राउज़र में, यह iframe, फिर से, संवाद दिखाई देने से पहले अपने जावास्क्रिप्ट को निष्पादित कर रहा है, लेकिन फिर स्पष्ट रूप से re - संवाद दिखाए जाने पर इसका निष्पादन करता है।आईई में एक बार jQuery संवाद iframe लोड हो रहा है और अन्य ब्राउज़रों में दो बार?

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

जो मैं अभी नहीं देख रहा हूं वह है जो मैं अब देख रहा हूं, जहां गैर-आईई ब्राउज़र दो बार प्रारंभ होते हैं, पहली बार कुल अपशिष्ट होने के बाद से जब संवाद प्रकट होता है तब उन्हें पुन: प्रारंभ किया जाता है।

जिस पृष्ठ का मैं जिक्र कर रहा हूं: http://openidux.dotnetopenauth.net/। आप ऊपरी-दाएं कोने में लॉगिन लिंक पर क्लिक करके व्यवहार को दोहरा सकते हैं।

धन्यवाद।

उत्तर

7

मैंने iframe.src प्रॉपर्टी को शुरुआत में "लगभग: रिक्त" में सेट करना समाप्त कर दिया, और जब संवाद वास्तव में पॉप अप होता है तो केवल स्रोत सेट करें। और फिर, जब संवाद छुपाता है (बेवकूफ, मुझे पता है) इसे फिर से लोड करने से बचने के लिए, मैंने इसे वापस रिक्त स्थान पर सेट किया है।

$(document).ready(function() { 
    $("#loginDialog").dialog({ 
     close: function(event, ui) { 
      // Clear the URL so Chrome/Firefox don't refresh the iframe when it's hidden. 
      iframe.src = "about:blank"; 
     }, 
     open: function(event, ui) { 
      iframe.src = loginContent; 
     }, 
    }); 
}); 
0

मैंने लिंक में गहराई से नहीं देखा है, लेकिन IFRame आरंभ करने के लिए आप किस प्रकार का अधिभार ईवेंट उपयोग कर रहे हैं? क्या यह एक ऑनलोड/ऑनलोड समस्या हो सकता है?

2

मुझे अभी भी यही समस्या थी। संवाद को खोलते समय मुझे एनीमेशन विकल्प से जोड़ने की समस्या मिली, ऐसा लगता है कि यह आईफ्रेम में हस्तक्षेप करता है। बस अपने जावास्क्रिप्ट से "शो" सेटिंग्स को हटा दें।

परिवर्तन इस

$("#blah").dialog({ title: 'Dialog Title', show: 'slide', .... }); 
इस

$("#blah").dialog({ title: 'Dialog Title', ... }); 
को

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