2012-06-24 9 views
5

के साथ iframe लोड तक स्पिनर दिखाएं मेरे पास दो वेबसाइट A.com और B.com हैं। मुझे A.com में एक आईफ्रेम में B.com एम्बेड करना होगा। मैं B.comएक पोस्टर प्रतिक्रिया

पर कोई भी परिवर्तन नहीं कर सकता है B.com केवल कुछ पोस्ट डेटा के साथ पोस्ट अनुरोधों के साथ काम करता है। मेरे पास यह निम्नलिखित

<!--This is the div inside which I will embedd the iframe--> 
<div id="frameDiv"></div> 

<script type="text/javascript"> 

    //Create iframe 
    var $ifr = $('<iframe name="myFrame" id="myFrame"></iframe>'); 

    //create form 
    var $form = $('<form action="B.com" method="post" target="myFrame"></form>'); 

    //Append hidden field to form to pass postData 
    $form.append($('<input type="hidden" name="dataName"><input>').val('data')); 

    //Append form to the iframe and then append iframe to the div  
    $('#frameDiv').append($ifr.append($form)); 

    $form.submit(); 
</script> 

अब, बी.एम. पोस्ट अनुरोध के जवाब में आईफ़्रेम के भीतर पूरी तरह से लोड हो गया है। लेकिन बी.एम. धीमा है। मैं ifframe लोड तक #frameDiv के अंदर एक स्पिनर दिखाना चाहता हूं। मैं यह कैसे कर सकता हूँ?

यह है कि मैं क्या करने की कोशिश की है:

$('#frameDiv').append($spinnerImage) 

//Does not work, fires immediately 
$ifr.load(function(){ 
    //Hide the spinner image 
}); 

//Does not work, fires immediately 
$ifr.ready(function(){ 
    //Hide the spinner image 
}); 

तो B.Com एक सरल प्राप्त था और iframe src विशेषता की, jQuery लोड विधि काम कर देता है के रूप में स्थापित किया गया था। लेकिन इस मामले में यह नहीं है।

किसी भी मदद की सराहना की है :)

उत्तर

5

आपको iframe के प्रारंभिक लोड ईवेंट हैंडलर के भीतर एक नया लोड घटना श्रोता बाध्यकारी कोशिश कर सकते हैं। निम्न डोमेन iFrame पर निम्नलिखित कार्य करता है:

$ifr.load(function(){ 
    /* bind new load event listener for next load*/ 
    $(this).load(function(){ 
     /* hide spinner*/ 
    }) 
}); 
+0

धन्यवाद @charlie, यह काम करता है। मुझे एक और तरीका भी मिला और इसे नीचे एक और जवाब के रूप में पोस्ट किया। मुझे बताएं कि उस दृष्टिकोण के बारे में आप क्या सोचते हैं – labroo

+0

इस काम को सबमिटल पर किया था? कभी भी इसे क्रॉस डोमेन – charlietfl

+0

Yep यह काम करता है, क्रॉस डोमेन भी :) – labroo

11

@ charlietfl का उत्तर सही है और यह काम करता है। मैं बस यह अन्य विधि साझा करना चाहता था जो मुझे पता चला कि यह भी काम करता है।

बस स्पिनर :)

#myFrame 
{ 
    background-image: url('/content/images/spinner.gif'); 
    background-repeat: no-repeat; 
} 

B.com भार, नया दस्तावेज़ स्पिनर छुपाता है जब ..

किसी भी विचार जो दृष्टिकोण पसंद किया जाता है करने के लिए iframe की पृष्ठभूमि सेट ??

+0

मुझे लगता है कि गतिशील Iframe के शरीर पर कोई सीएसएस स्थापित नहीं है क्योंकि यह पारदर्शी है ... बहुत ही रोचक समाधान! – charlietfl

+0

यह काम नहीं करता है अगर आपके द्वारा लोड किए जा रहे आईफ्रेम में एक पारदर्शी पृष्ठभूमि है, है ना? –

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