Resize iframe to content with Jquery

前端 未结 6 2207
孤街浪徒
孤街浪徒 2020-12-03 18:08

I\'m trying to resize an iframe dynamicly to fit its content. To do so I have a piece of code:

$(\"#IframeId\").height($(\"#IframeId\").contents().find(\"htm         


        
6条回答
  •  无人及你
    2020-12-03 18:42

    Not sure why @Nelson's solution wasn't working in Firefox 26 (Ubuntu), but the following Javascript-jQuery solution seems to work in Chromium and Firefox.

    /**
     * Called to resize a given iframe.
     *
     * @param frame The iframe to resize.
     */
    function resize( frame ) {
      var b = frame.contentWindow.document.body || frame.contentDocument.body,
          cHeight = $(b).height();
    
      if( frame.oHeight !== cHeight ) {
        $(frame).height( 0 );
        frame.style.height = 0;
    
        $(frame).height( cHeight );
        frame.style.height = cHeight + "px";
    
        frame.oHeight = cHeight;
      }
    
      // Call again to check whether the content height has changed.
      setTimeout( function() { resize( frame ); }, 250 );
    }
    
    /**
     * Resizes all the iframe objects on the current page. This is called when
     * the page is loaded. For some reason using jQuery to trigger on loading
     * the iframe does not work in Firefox 26.
     */
    window.onload = function() {
      var frame,
          frames = document.getElementsByTagName( 'iframe' ),
          i = frames.length - 1;
    
      while( i >= 0 ) {
        frame = frames[i];
        frame.onload = resize( frame );
    
        i -= 1;
      }
    };
    

    This continually resizes all iframes on a given page.

    Tested with jQuery 1.10.2.

    Using $('iframe').on( 'load', ... would only work intermittently. Note that the size must initially be set to 0 pixels in height if it is to shrink below the default iframe height in some browsers.

提交回复
热议问题