2014-01-24 74 views
0

我有这个js代码我搜索自动调整iframe的高度与其内容。它发布了这样的用户说的是。不过,我现在在iframe中有动态内容的问题。如何使iframe自动调整大小以及其内容的动态更改?

JS代码,我只有与页面的常规内容的作品,但不是当有动态变化中的事情。例如,通过ajax调用显示文本。

我试过寻找其他解决方案,但其他解决方案并没有像这个代码可以做的那样工作。

我希望有人能够帮助我更新代码以满足我目前的需求。我不是很熟悉jquery/javascript自己做这个。先谢谢你! :)

这是JS代码:

function setIframeHeight(iframeId) { 

    var ifDoc, ifRef = document.getElementById(iframeId); 
    try { 
     ifDoc = ifRef.contentWindow.document.documentElement; 
    } catch (e) { 
     try { 
      ifDoc = ifRef.contentDocument.documentElement; 
     } catch (ee) {} 
    } 

    if (ifDoc) { 
     ifRef.height = 1; 
     ifRef.height = ifDoc.scrollHeight; 

     /* For width resize, enable below. */ 

     //ifRef.width = 1; 
     //ifRef.width = ifDoc.scrollWidth; 
    } 
} 

我发现这个其他代码使IFRAME适应其动态内容,但我不知道如何让上面的代码,这一起工作。请帮帮我。

var iframe = document.getElementById("ifr").contentWindow; 
iframe.$(".toggle_div").bind("change", function() { 
$("#ifr").css({ 
    height: iframe.$("body").outerHeight() 
    }); 
}); 

总之,我需要autoresizes IFRAME其内容,如果有对内容的大小变化会再次自动调整代码。

回答

0

问题是,当iframe正文调整大小时,页面没有任何指示调整大小的触发器。

还有(据我所知)没有内置到JavaScript任何让你看在一个元素高度的变化。

您有两种选择。

如果您是iframe内容的所有者,您可以在该页面中放置一个脚本,该脚本可以调用它的父窗口,告诉父级运行您的resize脚本,或者可以运行一个函数来检查更改第二个左右。

对于第一种方法,你可以按照答案从这里Can events fired from an iframe be handled by elements in its parent?

否则只是做一个

setTimeout(function(){ 
    $("#ifr").css({ 
    height: iframe.$("body").outerHeight() 
    }); 
    },1000); 
0
function adjustMyFrameHeight() 
      { 
       var frame = getElement("myFrame"); 
       var frameDoc = getIFrameDocument("myFrame"); 
       frame.height = frameDoc.body.offsetHeight; 
      } 

调用此方法对你的iframe onload事件并更换mtFrame到iframe标识

+0

它没有工作,我收到了警告:“警告:在session_start():不能发送会话缓存限制器 - 已经发送了头(输出开始在C:\ XAMPP \ htdocs中\ HTML \ ECE \我ndex.php:192)在C:\ xampp \ htdocs \ HTML \ ECE \ index.php在第195行“:( – banana

+0

我用这个代码很多,检查你的ifram名称和getelement名称 – elia07