2012-08-22 30 views
11

मैं ऑनलोड हैंडलर के साथ iframe src है में गैर-एचटीएमएल दस्तावेज़ है:ऑनलोड, अगर आइफ्रेम (पीडीएफ या पाठ)

<iframe id="FrameForPrintVersion" src="" border="0" style="height:0; width:0; visibility:hidden;" onload = 'frameOnload()' > 

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

उत्तर

1

यह आईई के साथ एक मुद्दा है। मैं समाधान के रूप में निम्नलिखित का उपयोग कर रहा हूँ।

function dodisable() { 
    var b1=document.getElementById('B1'); 
    b1.value='Please Wait....'; 
    b1.disabled=true; 
    document.getElementById("browse").src = "hhhh.pdf"; /*LINK TO YOUR PDF*/ 
    setTimeout(URLoader_Timeout, 100); 
} 

function doenable() { 
    var b1=document.getElementById('B1'); 
    b1.value='Submit'; 
    b1.disabled=false; 
} 

function URLoader_Timeout() { 
    if (document.getElementById("browse").readyState == "complete") 
     doenable(); 
    else 
     setTimeout(URLoader_Timeout ,100); 
} 

एचटीएमएल

<input type="button" name="B1" id="B1" value="Go" onclick="dodisable();" /> 
<iframe id="browse" onload="return doenable();" style="width:100%;height:100%"></iframe> 
8

W3C के अनुसार, iframe टैग किसी भी घटना विशेषताओं का समर्थन नहीं करता। हालांकि प्रमुख ब्राउज़र इसका समर्थन करते हैं लेकिन इन पर भरोसा नहीं किया जा सकता है। यदि आप वास्तव में चाहते हैं कि यह इस कामकाज का प्रयास करें। आप इस तरह कुछ कोशिश कर सकते हैं।

setTimeout(function(){ 
    if($('#FrameForPrintVersion').contents().find('*')!='undefined') { 
     alert('your frame loaded'); 
    } 
},200) 
+0

@aiiak यह उत्तर सही के रूप में चिह्नित किया जाना चाहिए! साथ ही, मुझे लगता है कि आप एक IFrame को रीफ्रेश करने के लिए वैकल्पिक दृष्टिकोण के रूप में 'setInterval()' और 'clearInterval()' का उपयोग कर सकते हैं जहां कनेक्शन धीमा है या प्रतिक्रिया डेटा बड़ा है। – RZet