दिलचस्प पोस्ट
सी ++ मानक जनादेश iostreams के लिए खराब प्रदर्शन करता है, या क्या मैं सिर्फ एक खराब कार्यान्वयन से निपट रहा हूं? गर्म और ठंडे अवलोकन: क्या 'गर्म' और 'ठंडा' ऑपरेटर हैं? एक सीमा के भीतर अनोखी यादृच्छिक संख्या उत्पन्न – PHP जनरेटेड फ़ाइल को अस्थायी रूप से सर्वलेट आधारित वेब अनुप्रयोग में कैसे सहेजें "Mysql पंक्ति का आकार बहुत बड़ा" के लिए सीमा बदलें पता लगाएँ कि किस शाखा को एक स्थानीय शाखा ट्रैकिंग कर रही है आवेदन को संभालनेडिडबैकअक्टिव- "ऐप सक्रिय होने पर एक दृश्य नियंत्रक कैसे प्रतिक्रिया कर सकता है?" iPhone ऐप मिनस ऐप स्टोर? धूमकेतु और jQuery ActionBarActivity पर AppCompatActivity की वृद्धि क्या है? कैसे एक डेटा फ्रेम से कई चर के साथ सूत्र लिखने के लिए? ऑब्जेक्ट फिट क्यों flexbox में काम नहीं कर रहा है? एक सबमिट बटन के बिना प्रविष्टि दबाकर फ़ॉर्म सबमिट करना मुझे मॉडल देखने का उपयोग क्यों करना चाहिए? एंड्रॉइड टेक्स्टव्यू जस्टिफ़ टेक्स्ट

स्क्रॉलबार का उपयोग किए बिना सामग्री के अनुसार आइफ्रेम स्वतः ऊंचाई समायोजित करें?

उदाहरण के लिए:

<iframe name="Stack" src="http://stackoverflow.com/" width="740" frameborder="0" scrolling="no" id="iframe"> ... </iframe> 

मैं स्क्रॉल के उपयोग के बिना इसे अपनी सामग्री के अनुसार अपनी ऊँचाई को समायोजित करने में सक्षम होना चाहता हूं।

वेब के समाधान से एकत्रित समाधान "स्क्रॉलबार का उपयोग किए बिना सामग्री के अनुसार आइफ्रेम स्वतः ऊंचाई समायोजित करें?"

इसे अपने <head> अनुभाग में जोड़ें:

 <script> function resizeIframe(obj) { obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px'; } </script> 

और इस पर अपने iframe को बदलें:

 <iframe src="..." frameborder="0" scrolling="no" onload="resizeIframe(this)" /> 

जैसा कि javascript.bigresource.com पर पाया गया है

आप इस लाइब्रेरी का उपयोग कर सकते हैं, जो आपके आइफ्रेम को सही तरीके से आकार देते हैं और इसे सही आकार पर रखता है, जब भी आइफ्रेम की सामग्री का आकार बदलता है (या तो एक सेट setInterval या setInterval माध्यम से नियमित जांच के जरिए) और उसका आकार बदलता है।

https://github.com/davidjbradshaw/iframe-resizer

यह दोनों पार और एक ही डोमेन iframes के साथ काम करता है।

Hjpotter92 द्वारा सुझाव सफारी में काम नहीं करता है! मैंने स्क्रिप्ट के लिए एक छोटा समायोजन किया है, इसलिए यह अब सफारी में भी काम करता है।

कुछ ब्राउज़रों को ऊंचाई कम करने में सक्षम होने के लिए केवल परिवर्तन किए गए प्रत्येक लोड पर 0 की ऊंचाई को रीसेट कर रहे हैं।

इसे <head> टैग में जोड़ें:

 <script type="text/javascript"> function resizeIframe(obj){ obj.style.height = 0; obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px'; } </script> 

और अपने आइफ्रेम में निम्नलिखित onload विशेषता जोड़ onload , जैसे

 <iframe onload='resizeIframe(this)'></iframe> 

यहां एक संक्षिप्त संस्करण है:

 <iframe src="hello.html" onload="this.style.height=this.contentDocument.body.scrollHeight +'px';"> </iframe> 

इनलाइन जावास्क्रिप्ट से बचें; आप एक वर्ग का उपयोग कर सकते हैं:

 <iframe src="..." frameborder="0" scrolling="auto" class="iframe-full-height"></iframe> 

और इसे jQuery के साथ संदर्भित करें:

 $('.iframe-full-height').on('load', function(){ this.style.height=this.contentDocument.body.scrollHeight +'px'; }); 

कुछ मामलों में hjpotter92 उत्तर अच्छी तरह से काम करता है, लेकिन मुझे पता चला कि आईफ्रेम सामग्री को अक्सर फ़ायरफ़ॉक्स और आईई में नीचे काटा गया है, जबकि क्रोम में ठीक है।

निम्नलिखित मेरे लिए अच्छी तरह से काम करता है और क्लिपिंग समस्या को हल करता है कोड http://www.dyn-web.com/tutorials/iframes/height/ पर पाया गया था। मैंने एचटीएमएल से ओनलोड एट्रिब्यूट लेने के लिए थोड़ा बदलाव किया है I <iframe> HTML के बाद और समापन </body> टैग के बाद निम्न कोड रखें:

 <script type="text/javascript"> function getDocHeight(doc) { doc = doc || document; // stackoverflow.com/questions/1145850/ var body = doc.body, html = doc.documentElement; var height = Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight ); return height; } function setIframeHeight(id) { var ifrm = document.getElementById(id); var doc = ifrm.contentDocument? ifrm.contentDocument: ifrm.contentWindow.document; ifrm.style.visibility = 'hidden'; ifrm.style.height = "10px"; // reset to minimal height ... // IE opt. for bing/msn needs a bit added or scrollbar appears ifrm.style.height = getDocHeight( doc ) + 4 + "px"; ifrm.style.visibility = 'visible'; } document.getElementById('ifrm').onload = function() { // Adjust the Id accordingly setIframeHeight(this.id); } </script> 

आपका आईफ्रेम HTML:

 <iframe id="ifrm" src="some-iframe-content.html"></iframe> 

नोट करें कि यदि आप दस्तावेज़ के <head> में जावास्क्रिप्ट को शामिल करना पसंद करते हैं तो आप onload HTML में इनलाइन onload विशेषता का उपयोग करने के लिए वापस जा सकते हैं, जैसे कि डीआईएन-वेब वेब पेज।

jQuery के .contents () विधि विधि हमें DOM पेड़ में तत्व के तत्काल बच्चों के माध्यम से खोज करने की अनुमति देता है

jQuery:

 $('iframe').height( $('iframe').contents().outerHeight() ); 

याद रखें कि पृष्ठ के शरीर के अंदर की आइफ्रेम में इसकी ऊंचाई होना चाहिए

सीएसएस:

 body { height: auto; overflow: auto } 

यह मेरे लिए काम करता है (एक पृष्ठ पर कई iframes के साथ भी):

 $('iframe').load(function(){$(this).height($(this).contents().outerHeight());}); 

यह मेरे लिए काम करता है (अधिकतर)

इसे अपने पृष्ठ के नीचे रखें।

 <script type="application/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> </script> <script type="application/javascript" src="/script/jquery.browser.js"> </script> <script type="application/javascript" src="/script/jquery-iframe-auto-height.js"> </script> <script type="application/javascript"> jQuery('iframe').iframeAutoHeight(); $(window).load( function() { jQuery('iframe').iframeAutoHeight(); } ); // for when content is not html eg a PDF function setIframeHeight() { $('.iframe_fullHeight').each( function (i, item) { item.height = $(document).height(); } ); }; $(document).ready( function () { setIframeHeight(); }); $(window).resize( function () { setIframeHeight(); }); </script> 

पहली छमाही ??? से है, और जब आइफ्रेम में html होता है तो काम करता है। दूसरी छमाही पेज ऊंचाई (नहीं सामग्री ऊंचाई) के लिए iframe सेट करते हैं, जब iframes वर्ग iframe_fullHeight । आप इसका उपयोग कर सकते हैं यदि सामग्री एक पीडीएफ या ऐसा अन्य तरह की है, लेकिन आपको क्लास सेट करना होगा। इसके अलावा केवल तब ही इस्तेमाल किया जा सकता है जब पूर्ण ऊंचाई उचित हो।

नोट: किसी कारण के लिए, जब विंडो पुन: आकार के बाद पुन: गणना की जाती है, तो यह ऊंचाई गलत हो जाता है।

 function autoResize(id){ var newheight; var newwidth; if(document.getElementById){ newheight=document.getElementById(id).contentWindow.document.body.scrollHeight; newwidth=document.getElementById(id).contentWindow.document.body.scrollWidth; } document.getElementById(id).height=(newheight) + "px"; document.getElementById(id).width=(newwidth) + "px"; } 

इसे अपने iframe में जोड़ें: onload = "autoResize ('youriframeid')"

 jq2('#stocks_iframe').load(function(){ var iframe_width = jq2('#stocks_iframe').contents().outerHeight() ; jq2('#stocks_iframe').css('height',iframe_width); }); <iframe id='stocks_iframe' style='width:100%;height:0px;' frameborder='0'> 

गतिशील रूप से बनाए गए iframes के लिए पिछले कॉलिंग iframe.onload में मुझे समस्याएं आ रही हैं, इसलिए मैं आइफ्रेम आकार को सेट करने के लिए इस दृष्टिकोण से चला गया:

आईफ़्रेम दृश्य

 var height = $("body").outerHeight(); parent.SetIFrameHeight(height); 

प्रमुख राय

 SetIFrameHeight = function(height) { $("#iFrameWrapper").height(height); } 

(यह केवल काम करने जा रहा है यदि दोनों दृश्य समान डोमेन में हैं)

मैंने इसे AngularJS के साथ किया था कोणीय में एनजी-लोड नहीं है, लेकिन एक तृतीय पक्ष मॉड्यूल बनाया गया था; नीचे कर्ज़दार के साथ स्थापित करें, या यहां इसे ढूंढें: https://github.com/andrefarzat/ng-load

एनजीएलओड डायरेक्टिव प्राप्त करें: bower install ng-load --save

अपने iframe को सेटअप करें:

 <iframe id="CreditReportFrame" src="about:blank" frameborder="0" scrolling="no" ng-load="resizeIframe($event)" seamless></iframe> 

नियंत्रक का आकार बदलने फ़्रेम:

 $scope.resizeIframe = function (event) { console.log("iframe loaded!"); var iframe = event.target; iframe.style.height = iframe.contentWindow.document.body.scrollHeight + 'px'; }; 

आईई 11 के लिए इसे आज़माएं

 <iframe name="Stack" src="http://stackoverflow.com/" style='height: 100%; width: 100%;' frameborder="0" scrolling="no" id="iframe">...</iframe> 

यह विकल्प 100% काम करेगा

 <iframe id='iframe2' src="url.com" frameborder="0" style="overflow: hidden; height: 100%; width: 100%; position: absolute;" height="100%" width="100%"></iframe> 
 <script type="text/javascript"> function resizeIframe(obj) { obj.style.height = 0; obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px'; } </script> 

यह क्रोम के लिए काम नहीं कर रहा है लेकिन फ़ायरफ़ॉक्स के लिए काम करना

मैं एक सामान्य पृष्ठ की तरह iframe व्यवहार करना चाहता था (मुझे एक iframe तत्व के अंदर एक फ़ुलस्क्रीन बैनर बनाने की आवश्यकता थी), इसलिए यह मेरी स्क्रिप्ट है:

  (function (window, undefined) { var frame, lastKnownFrameHeight = 0, maxFrameLoadedTries = 5, maxResizeCheckTries = 20; //Resize iframe on window resize addEvent(window, 'resize', resizeFrame); var iframeCheckInterval = window.setInterval(function () { maxFrameLoadedTries--; var frames = document.getElementsByTagName('iframe'); if (maxFrameLoadedTries == 0 || frames.length) { clearInterval(iframeCheckInterval); frame = frames[0]; addEvent(frame, 'load', resizeFrame); var resizeCheckInterval = setInterval(function () { resizeFrame(); maxResizeCheckTries--; if (maxResizeCheckTries == 0) { clearInterval(resizeCheckInterval); } }, 1000); resizeFrame(); } }, 500); function resizeFrame() { if (frame) { var frameHeight = frame.contentWindow.document.body.scrollHeight; if (frameHeight !== lastKnownFrameHeight) { lastKnownFrameHeight = frameHeight; var viewportWidth = document.documentElement.clientWidth; if (document.compatMode && document.compatMode === 'BackCompat') { viewportWidth = document.body.clientWidth; } frame.setAttribute('width', viewportWidth); frame.setAttribute('height', lastKnownFrameHeight); frame.style.width = viewportWidth + 'px'; frame.style.height = frameHeight + 'px'; } } } //-------------------------------------------------------------- // Cross-browser helpers //-------------------------------------------------------------- function addEvent(elem, event, fn) { if (elem.addEventListener) { elem.addEventListener(event, fn, false); } else { elem.attachEvent("on" + event, function () { return (fn.call(elem, window.event)); }); } } })(window); 

यह कार्य स्वयं-व्याख्यात्मक है और इसके लिए उनके उद्देश्य की व्याख्या करने के लिए टिप्पणियां हैं।