Az Iframe átméretezése a tartalom illesztéséhez (csak ugyanazon domainnél) - CSS-trükkök

Anonim

Az iframe-ekhez általában a szélességet és a magasságot állítja be. Ha a belső tartalom nagyobb, a gördítősávoknak elegendőnek kell lenniük. Az alábbi szkript megpróbálja kijavítani ezt azáltal, hogy dinamikusan átméretezi az iframe-et a betöltött tartalomhoz.

 $(function()( var iFrames = $('iframe'); function iResize() ( for (var i = 0, j = iFrames.length; i < j; i++) ( iFrames(i).style.height = iFrames(i).contentWindow.document.body.offsetHeight + 'px';) ) if ($.browser.safari || $.browser.opera) ( iFrames.load(function()( setTimeout(iResize, 0); )); for (var i = 0, j = iFrames.length; i < j; i++) ( var iSource = iFrames(i).src; iFrames(i).src = ''; iFrames(i).src = iSource; ) ) else ( iFrames.load(function() ( this.style.height = this.contentWindow.document.body.offsetHeight + 'px'; )); ) )); 

Átméretezi egy ilyen iframe-et:



Demo megtekintése

Még mindig problémás ...

  1. Az iframe-tartalom forrásának ugyanabban a tartományban kell lennie
  2. ha az iframe-en belüli tartalom magasságot változik, ez nem fog alkalmazkodni
  3. Hagytam a Google Analytics kódot a fenti demóból, mivel amikor hozzáadtam, úgy tűnik, hogy beavatkozik és nem méretezi át az iframe-et, annak ellenére, hogy látszólag nem generált hibákat.