दिलचस्प पोस्ट
ज़िपफ़ाइल मॉड्यूल के साथ ज़िपफ़ाइल से फ़ाइल हटाएं के लिए इकाई फ़्रेमवर्क में नेविगेशन गुण क्या हैं? नोड। जेएस बेस्ट प्रैक्टिस अपवाद हैंडलिंग जावा में एक HTTP GET कैसे करूँ? पायथन: अपने ऑपरेटरों को परिभाषित? 3 अक्षांश और रेखांश अंक और 3 दूरी का उपयोग करके त्रिकोणीयकरण कैसे एक PostgreSQL क्वेरी में एक चर घोषित करने के लिए Django ईमेल भेज रहा है JQuery के साथ AJAX अनुरोध में हैडर जोड़ें ग्लाइड के साथ GIF फ़ाइल दिखाएं (छवि लोडिंग और कैशिंग लाइब्रेरी) वसंत में स्टार्टअप पर विधि निष्पादित करें आईओएस 7 में पृष्ठभूमि स्थान सेवाएं काम नहीं कर रही हैं Xpath के साथ एक सीएसएस वर्ग का चयन करना एंड्रॉइड लॉक स्क्रीन छवि कैसे सेट करें स्क्रीन ओरियनेशन लॉक

उस सामग्री की फिट होने के लिए आइफ्रेम की चौड़ाई ऊँचाई समायोजित करें

मुझे आइफ्रेम की चौड़ाई और ऊंचाई समायोजित करने के लिए एक समाधान की आवश्यकता है जिससे कि उसकी सामग्री को मुश्किल से फिट किया जा सके। मुद्दा यह है कि iframe लोड किए जाने के बाद चौड़ाई और ऊंचाई को बदला जा सकता है। मुझे लगता है मुझे आइफैम में निहित शरीर के आयाम में बदलाव से निपटने के लिए एक घटना की ज़रूरत है।

वेब के समाधान से एकत्रित समाधान "उस सामग्री की फिट होने के लिए आइफ्रेम की चौड़ाई ऊँचाई समायोजित करें"

<script type="application/javascript"> function resizeIFrameToFitContent( iFrame ) { iFrame.width = iFrame.contentWindow.document.body.scrollWidth; iFrame.height = iFrame.contentWindow.document.body.scrollHeight; } window.addEventListener('DOMContentLoaded', function(e) { var iFrame = document.getElementById( 'iFrame1' ); resizeIFrameToFitContent( iFrame ); // or, to resize all iframes: var iframes = document.querySelectorAll("iframe"); for( var i = 0; i < iframes.length; i++) { resizeIFrameToFitContent( iframes[i] ); } } ); </script> <iframe src="usagelogs/default.aspx" id="iFrame1"></iframe> 

क्रॉस-ब्राउज़र jQuery प्लग-इन

क्रॉस-बोवर, क्रॉस डोमेन लाइब्रेरी जो आइफ्रेम और मेजबान पेज के बीच संवाद करने के लिए postMessage को सामग्री और पोस्ट postMessage रखने के लिए mutationObserver postMessage का उपयोग करता है। JQuery के साथ या बिना काम करता है

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

मैं थोड़ी देर के लिए इस के साथ फंस गया था, जैसा कि आईफ्रेम के अंदर कोड आईफ्रेम (और आईफ्रेम को संपादित नहीं कर सकता) में डोम तक ही सीमित था, और आईफ्रेम के बाहर निष्पादित कोड आईओआरएम के बाहर आईफ्रेम (और couldn ' आईफ्रेम के अंदर से आने वाली कोई घटना नहीं लेना)

समाधान (सहयोगी से सहायता के द्वारा) की खोज से आया है कि jQuery को DOM का उपयोग करने के लिए कहा जा सकता है। इस मामले में, मूल विंडो का DOM

जैसे, कोड जैसे कि आपको क्या चाहिए (जब आईफ्रेम के अंदर चलाया जाता है):

 <script type="text/javascript"> jQuery(document).ready(function () { jQuery("#IDofControlFiringResizeEvent").click(function () { var frame = $('#IDofiframeInMainWindow', window.parent.document); var height = jQuery("#IDofContainerInsideiFrame").height(); frame.height(height + 15); }); }); </script> 

अगर iframe सामग्री उसी डोमेन से है तो यह बहुत अच्छा काम करना चाहिए। यह हालांकि jQuery की आवश्यकता होती है

 $('#iframe_id').load(function () { $(this).height($(this).contents().height()); $(this).width($(this).contents().width()); }); 

इसे गतिशील रूप से आकार देने के लिए आप यह कर सकते हैं:

 <script language="javaScript"> <!-- function autoResize(){ $('#themeframe').height($('#themeframe').contents().height()); } //--> </script> <iframe id="themeframe" onLoad="autoResize();" marginheight="0" frameborder="0" src="URL"></iframe> 

फिर पेज पर कि iframe भार यह जोड़ता है:

 <script language="javaScript"> function resize() { window.parent.autoResize(); } $(window).on('resize', resize); </script> 

यदि आप jQuery का उपयोग नहीं करना चाहते हैं तो यहां एक क्रॉस-ब्राउज़र समाधान है:

 /** * Resizes the given iFrame width so it fits its content * @param e The iframe to resize */ function resizeIframeWidth(e){ // Set width of iframe according to its content if (e.Document && e.Document.body.scrollWidth) //ie5+ syntax e.width = e.contentWindow.document.body.scrollWidth; else if (e.contentDocument && e.contentDocument.body.scrollWidth) //ns6+ & opera syntax e.width = e.contentDocument.body.scrollWidth + 35; else (e.contentDocument && e.contentDocument.body.offsetWidth) //standards compliant syntax – ie8 e.width = e.contentDocument.body.offsetWidth + 35; } 

एम्बेड के लिए एक-लाइनर समाधान: एक न्यूनतम-आकार के साथ शुरू होता है और सामग्री आकार में बढ़ जाती है। स्क्रिप्ट टैग की आवश्यकता नहीं है

 <iframe src="http://URL_HERE.html" onload='javascript:(function(o){o.style.height=o.contentWindow.document.body.scrollHeight+"px";}(this));' style="height:200px;width:100%;border:none;overflow:hidden;"></iframe> 

मैं इस कोड को सभी iframes की ऊंचाई को स्वत: दोबारा करने के लिए उपयोग कर रहा हूं (कक्षा ऑटोहोइट के साथ) जब वे पेज पर लोड करते हैं परीक्षण किया गया और यह IE, FF, क्रोम, सफारी और ओपेरा में काम करता है।

 function doIframe() { var $iframes = $("iframe.autoHeight"); $iframes.each(function() { var iframe = this; $(iframe).load(function() { setHeight(iframe); }); }); } function setHeight(e) { e.height = e.contentWindow.document.body.scrollHeight + 35; } $(window).load(function() { doIframe(); }); 

यह एक ठोस सबूत समाधान है

 function resizer(id) { var doc=document.getElementById(id).contentWindow.document; var body_ = doc.body, html_ = doc.documentElement; var height = Math.max( body_.scrollHeight, body_.offsetHeight, html_.clientHeight, html_.scrollHeight, html_.offsetHeight ); var width = Math.max( body_.scrollWidth, body_.offsetWidth, html_.clientWidth, html_.scrollWidth, html_.offsetWidth ); document.getElementById(id).style.height=height; document.getElementById(id).style.width=width; } 

एचटीएमएल

 <IFRAME SRC="blah.php" id="iframe1" onLoad="resizer('iframe1');"></iframe> 

यहां कई तरीके हैं:

 <body style="margin:0px;padding:0px;overflow:hidden"> <iframe src="http://www.example.com" frameborder="0" style="overflow:hidden;height:100%;width:100%" height="100%" width="100%"></iframe> </body> 

और दूसरा वैकल्पिक

 <body style="margin:0px;padding:0px;overflow:hidden"> <iframe src="http://www.example.com" frameborder="0" style="overflow:hidden;overflow-x:hidden;overflow-y:hidden;height:100%;width:100%;position:absolute;top:0px;left:0px;right:0px;bottom:0px" height="100%" width="100%"></iframe> </body> 

ऊपर के रूप में दिखाए जाने वाले 2 विकल्प के साथ स्क्रॉल करने के लिए

 <body style="margin:0px;padding:0px;overflow:hidden"> <iframe src="http://www.example.com" frameborder="0" style="overflow:hidden;height:150%;width:150%" height="150%" width="150%"></iframe> </body> 

दूसरे कोड के साथ हैक

 <body style="margin:0px;padding:0px;overflow:hidden"> <iframe src="http://www.example.com" frameborder="0" style="overflow:hidden;overflow-x:hidden;overflow-y:hidden;height:150%;width:150%;position:absolute;top:0px;left:0px;right:0px;bottom:0px" height="150%" width="150%"></iframe> </body> 

आईफ्रेम के स्क्रॉल-बार को छिपाने के लिए, माता-पिता स्क्रॉलबार छिपाने के लिए "ओवरफ्लो: छिपे हुए" होते हैं और आइफ्रेम को 150% की चौड़ाई और ऊंचाई तक जाने के लिए किया जाता है जो पृष्ठ के बाहर स्क्रॉल-सलाखों को बलों करता है और जब से शरीर ' यदि स्क्रॉल-बार नहीं है तो उम्मीद नहीं कर सकता कि आइफ्रेम पृष्ठ की सीमा से अधिक हो। यह पूरी चौड़ाई के साथ आइफ्रेम के स्क्रॉलबार छुपाता है!

स्रोत: सेट आइफ्रेम ऑटो ऊंचाई

पृथ्वी पर सब कुछ करने की कोशिश करने के बाद, यह वास्तव में मेरे लिए काम करता है

index.html

 <style type="text/css"> html, body{ width:100%; height:100%; overflow:hidden; margin:0px; } </style> <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script type="text/javascript"> function autoResize(iframe) { $(iframe).height($(iframe).contents().find('html').height()); } </script> <iframe src="http://iframe.domain.com" width="100%" height="100%" marginheight="0" frameborder="0" border="0" scrolling="auto" onload="autoResize(this);"></iframe> 

सभी ऊपर दिए गए तरीकों का उपयोग कर काम नहीं कर सकते।

जावास्क्रिप्ट:

 function resizer(id) { var doc = document.getElementById(id).contentWindow.document; var body_ = doc.body, html_ = doc.documentElement; var height = Math.max(body_.scrollHeight, body_.offsetHeight, html_.clientHeight, html_.scrollHeight, html_.offsetHeight); var width = Math.max(body_.scrollWidth, body_.offsetWidth, html_.clientWidth, html_.scrollWidth, html_.offsetWidth); document.getElementById(id).style.height = height; document.getElementById(id).style.width = width; } 

एचटीएमएल:

 <div style="background-color:#b6ff00;min-height:768px;line-height:inherit;height:inherit;margin:0px;padding:0px;overflow:visible" id="mainDiv" > <input id="txtHeight"/>height <input id="txtWidth"/>width <iframe src="head.html" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" title="topFrame" style="width:100%; height: 47px" frameborder="0" ></iframe> <iframe src="left.aspx" name="leftFrame" scrolling="yes" id="Iframe1" title="leftFrame" onload="resizer('Iframe1');" style="top:0px;left:0px;right:0px;bottom:0px;width: 30%; border:none;border-spacing:0px; justify-content:space-around;" ></iframe> <iframe src="index.aspx" name="mainFrame" id="Iframe2" title="mainFrame" scrolling="yes" marginheight="0" frameborder="0" style="width: 65%; height:100%; overflow:visible;overflow-x:visible;overflow-y:visible; " onload="resizer('Iframe2');" ></iframe> </div> 

Env: IE 10, Windows 7 x 64

मैंने थोड़ा ऊपर ग्रेनाफ़ के महान समाधान को संशोधित किया। ऐसा लग रहा था कि उसके समाधान ने घटना से पहले सही आकार के आधार पर iframe के आकार को संशोधित किया। मेरी स्थिति के लिए (iframe के माध्यम से ईमेल सबमिशन) मुझे कब सबमिट करने के बाद सही बदलने के लिए आइफ्रेम की आवश्यकता होती है उदाहरण के लिए सबमिशन के बाद सत्यापन त्रुटियों या "धन्यवाद" संदेश दिखाएं।

मैंने नेस्टेड क्लिक () फ़ंक्शन को समाप्त कर दिया है और इसे अपने iframe html में डाल दिया है:

 <script type="text/javascript"> jQuery(document).ready(function () { var frame = $('#IDofiframeInMainWindow', window.parent.document); var height = jQuery("#IDofContainerInsideiFrame").height(); frame.height(height + 15); }); </script> 

मेरे लिए काम किया है, लेकिन क्रॉस ब्राउजर कार्यक्षमता के बारे में निश्चित नहीं है

अगर यहां कोई हो रहा है: अगर मैं आईफ्रेम से divs को हटाता हूं तो समाधान के साथ एक समस्या थी – आईफ़्रेम कम नहीं हुई

एक Jquery प्लगइन है जो काम करता है:

http://www.jqueryscript.net/layout/jQuery-Plugin-For-Auto-Resizing-iFrame-iFrame-Resizer.html

कुछ प्रयोग करने के बाद मुझे एक और समाधान मिला। मैं मूल रूप से इस प्रश्न के लिए 'सर्वोत्तम उत्तर' के रूप में चिह्नित कोड की कोशिश की और यह काम नहीं कर रहा था मेरा अनुमान इसलिए है क्योंकि मेरे कार्यक्रम में मेरे आइफ्रेम को गतिशील रूप से उत्पन्न किया गया था यहां मैंने उपयोग किया हुआ कोड है (यह मेरे लिए काम किया है):

आइफ्रेम के अंदर जावास्क्रिप्ट लोड किया जा रहा है:

 window.onload = function() { parent.document.getElementById('fileUploadIframe').style.height = document.body.clientHeight+5+'px'; parent.document.getElementById('fileUploadIframe').style.width = document.body.clientWidth+18+'px'; }; 

स्क्रॉल सलाखों (कुछ अजीब बग / आईफ्रेम के प्रभाव) को हटाने के लिए ऊंचाई में 4 या अधिक पिक्सल जोड़ना आवश्यक है। चौड़ाई भी अजनबी है, आप 18px शरीर की चौड़ाई को जोड़ने के लिए सुरक्षित हैं। यह भी सुनिश्चित करें कि आपके पास आईफ्रेम बॉडी के लिए सीएसएस (नीचे) लागू है

 html, body { margin:0; padding:0; display:table; } iframe { border:0; padding:0; margin:0; } 

Iframe के लिए यहां html है:

 <iframe id="fileUploadIframe" src="php/upload/singleUpload.html"></iframe> 

मेरे आइफ्रेम के अंदर सभी कोड यहां हैं:

 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>File Upload</title> <style type="text/css"> html, body { margin:0; padding:0; display:table; } </style> <script type="text/javascript"> window.onload = function() { parent.document.getElementById('fileUploadIframe').style.height = document.body.clientHeight+5+'px'; parent.document.getElementById('fileUploadIframe').style.width = document.body.clientWidth+18+'px'; }; </script> </head> <body> This is a test.<br> testing </body> </html> 

मैंने क्रोम में और फ़ायरफ़ॉक्स में थोड़ा (Windows XP में) में परीक्षण किया है। मुझे अभी भी अधिक परीक्षण करना है, कृपया मुझे बताएं कि यह आपके लिए कैसे काम करता है

मुझे बेहतर बनाने के लिए यह रीसाइज़र मिला:

 function resizer(id) { var doc = document.getElementById(id).contentWindow.document; var body_ = doc.body; var html_ = doc.documentElement; var height = Math.max( body_.scrollHeight, body_.offsetHeight, html_.clientHeight, html_.scrollHeight, html_.offsetHeight ); var width = Math.max( body_.scrollWidth, body_.offsetWidth, html_.clientWidth, html_.scrollWidth, html_.offsetWidth ); document.getElementById(id).height = height; document.getElementById(id).width = width; } 

ध्यान दें कि शैली ऑब्जेक्ट हटा दिया गया है।

JQuery में, यह मेरे लिए सबसे अच्छा विकल्प है, जो वास्तव में मेरी मदद करता है !! मैं आपकी मदद करता हूँ!

iframe

 <iframe src="" frameborder="0" id="iframe" width="100%"></iframe> 

jQuery

 <script> var valueSize = $( "#iframe" ).offset(); var totalsize = (valueSize.top * 2) + valueSize.left; $( "#iframe" ).height(totalsize); </script> 

ऐसा संभव है कि "भूत जैसी" आइफ्रेम जो ऐसा काम करता है, वहां नहीं था।

देखें http://codecopy.wordpress.com/2013/02/22/घोस्ट-फ्रै&#x92E; -क्रॉसडोमेन-फ्राम -रेसाइज़

मूल रूप से आप https://developer.mozilla.org/en-US/docs/DOM/window.post में वर्णित ईवेंट सिस्टम parent.postMessage(..) उपयोग करते हैं parent.postMessage(..)

यह सभी आधुनिक ब्राउज़रों का काम करता है!

ऐसा मैं कैसे करूंगा (एफएफ / क्रोम में परीक्षण किया गया):

 <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script type="text/javascript"> function autoResize(iframe) { $(iframe).height($(iframe).contents().find('html').height()); } </script> <iframe src="page.html" width="100%" height="100" marginheight="0" frameborder="0" onload="autoResize(this);"></iframe> 

मुझे पता है कि पोस्ट पुरानी है, लेकिन मेरा मानना ​​है कि यह अभी भी एक और तरीका है। मैंने अभी अपने कोड पर लागू किया है पेज लोड पर और पृष्ठ के आकार पर पूरी तरह से काम करता है:

 var videoHeight; var videoWidth; var iframeHeight; var iframeWidth; function resizeIframe(){ videoHeight = $('.video-container').height();//iframe parent div's height videoWidth = $('.video-container').width();//iframe parent div's width iframeHeight = $('.youtubeFrames').height(videoHeight);//iframe's height iframeWidth = $('.youtubeFrames').width(videoWidth);//iframe's width } resizeIframe(); $(window).on('resize', function(){ resizeIframe(); }); 

हेडर में रखा जाने वाला जावास्क्रिप्ट:

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

यहाँ iframe HTML कोड जाता है:

 <iframe class="spec_iframe" seamless="seamless" frameborder="0" scrolling="no" id="iframe" onload="javascript:resizeIframe(this);" src="somepage.php" style="height: 1726px;"></iframe> 

सीएसएस स्टाइलशीट

>

 .spec_iframe { width: 100%; overflow: hidden; } 

सादगी:

 var iframe = $("#myframe"); $(iframe.get(0).contentWindow).on("resize", function(){ iframe.width(iframe.get(0).contentWindow.document.body.scrollWidth); iframe.height(iframe.get(0).contentWindow.document.body.scrollHeight); }); 

यह केवल इनलाइन सीएसएस का उपयोग करता है:

 <iframe src="http://example.com" style="resize: both;" onload="this.style.height=this.contentDocument.body.scrollHeight +'px'; this.style.width=this.contentDocument.body.scrollWidth +'px';" onresize="this.style.height=this.contentDocument.body.scrollHeight +'px'; this.style.width=this.contentDocument.body.scrollWidth +'px';"> </iframe>