5

में बड़ी संख्या में धीमी गति से एचटीएमएल है, लेकिन जहां मैंने सोचा कि बाधा गलत होगी: यह तब होता है जब मैं संवाद खोल रहा हूं, न कि जब मैं स्ट्रिंग का निर्माण कर रहा हूं एचटीएमएल (~ 35 एमएमएस), न ही जब मैं इसे संवाद कंटेनर div (~ 50ms) में जोड़ रहा हूं। एफएफ में नीचे संवाद ("खुला") कॉल करते समय, मुझे लगातार 1800+ एमएस मिल रहा है, आईई 7 लगभग 17000 (!) एमएस है। मैं 1800ms के साथ रह सकता हूं, लेकिन आईई 7 (मेरे उपयोगकर्ता आधार का 99%) में, यह बहुत लंबा तरीका है।jquery UI संवाद खुला है आईई 7

// prep dialog 
$("#print-box").dialog({ 
    bgiframe: false, 
    width:900, 
    height: 1000, 
    modal: true, 
    autoOpen: false, 
    draggable: false 
    }); 

// display selected items in print preview modal 
$("#print-preview").click(function() { 

    $('#print-box').empty(); 

    var tmp = ['<div class="print-container">']; 
    var rows = $('[name="print-this-listing"]:checked').parents("div.listing").clone(); 

    for (var i=0; i < rows.length; i++) { 
     tmp.push($(rows[i]).html()); 
    } 

    tmp.push('</div>'); 

    $('#print-box').html(tmp.join('')); 
    $('#print-box').dialog('open'); 
}); 

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

उत्तर

6

मुझे jQuery UI संवाद का उपयोग करने में एक ही समस्या आई। चीजों को गति देने के लिए पहले संवाद खोलने का प्रयास करें और फिर डेटा संलग्न करें।

$('#print-box').dialog('open'); 
    $('#print-box').html(tmp.join('')); 

यह मेरे लिए मदद करना प्रतीत होता था। यह देखने के लिए जांचें कि क्या आपके द्वारा जोड़े जा रहे स्ट्रिंग में आपके टूटे हुए टैग या विकृत HTML हैं या नहीं।

+0

धन्यवाद। मैं एक आईफ्रेम का उपयोग "पूर्वावलोकन विंडो" के रूप में कर रहा था और डोम से तत्व छुपा रहा था, लेकिन वापस चला गया, और यह वास्तव में काफी तेज़ था - अभी भी मेरे बड़े पैमाने पर डेटा आवश्यकताओं के लिए स्वीकार्य नहीं है, लेकिन फिर भी तेज़ है। – gravyface

+0

मुझे आईई 6 और आईई 8 में एक ही समस्या का सामना करना पड़ा। मेरा फिक्स मेरे संवाद की सामग्री प्राप्त करने के लिए अजाक्स कॉल करना था, और इसे खोलने के बाद इसे संवाद की सामग्री के रूप में सेट करना था, जैसा कि इस उत्तर में सुझाया गया है। –

1

हालांकि ऊपर दिए गए एचटीएमएल() कोड आईई को मेरे मामले में तेजी से संवाद प्रस्तुत करने के लिए मजबूर करता है, यह संवाद के बाद मैं बना रहा था AJAX अनुरोध के रूप में आईई में धीमापन का कारण बन गया। सहेजने के बाद बटन को क्लिक करने के बाद इस विशेष वेब एप्लिकेशन को प्रतीक्षा संवाद प्रदर्शित करने की आवश्यकता थी।

सेटटाइमआउट का उपयोग करके एजेक्स अनुरोध संवाद प्रतिपादन के बाहर होने की अनुमति देता है। यहां उपयोग किया गया मूल कोड है:

function request(requestURL, sendData, asyncRequest) { 
     return jQuery.ajax(
     { 
      url: requestURL, 
      type: 'POST', 
      datatype: 'json', 
      data: sendData, 
      contentType: 'application/json; charset=utf-8', 
      async: asyncRequest, 
      success: function (data, result) { 
       if (!result) 
        alert('Failure to retrieve the related lookup data: ' + requestURL); 
      } 
     }).responseText; 
    } 

    function modifyProperties(postData) { 
     var d; 

     // create wait dialog 
     jQuery("#wait").dialog({ 
      maxWidth: 125, 
      maxHeight: 75, 
      minWidth: 125, 
      minHeight: 75, 
      modal: true, 
      resizable: false 
     }); 

     // ie fix to ensure dialog is rendered prior to ajax request 
     setTimeout(function() { 
      // make an ajax request after 500ms 
      d = request('/mywebservice', postData, false); 
      jQuery("#wait").dialog("close"); 
      var responseObject = JSON.parse(d); 
     }, 500); 

     return true; 
    } 

    modifyProperties(); 
संबंधित मुद्दे