动态设置iframe高度;不处理ie和chrome

dynamically setting the iframe height; not working on ie and chrome

本文关键字:处理 ie chrome 设置 iframe 高度 动态      更新时间:2023-09-26

我正在尝试使用javascript和Jquery动态设置iframe的高度。

但出于某种原因,这在Ie8&铬。(但它在firefox上运行良好)

请一些人帮忙好吗?

感谢

 function resizePanel() {
         window.console.log("ran the resize panel function");
     var frame = document.getElementsByTagName('iframe')[0];
    if(frame != null) {
        var height;            
        if(self.innerHeight) {
            window.console.log("ran the self.innerHeight");
            height= self.innerHeight;                             
        }
        else if (document.documentElement && (document.documentElement.clientHeight)) {
           window.console.log("ran the clientHeight");
           height = document.documentElement.clientHeight;                           
         }
         else if(document.body) {
           window.console.log("ran the document.body");
           height = document.body.clientHeight;            
         }
         frame.style.height = height - 165 + 'px'         
    }};
    $(document).ready(function() {
        resizePanel();
        $(window).resize(function() {
            resizePanel();
        });
    });  
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(EndRequest);
    function EndRequest(sender, args) {
        resizePanel();
    }

您的代码似乎有点复杂,您可以执行以下操作:

function resizePanel() {
    window.console.log("ran the resize panel function");
    var frame = document.getElementsByTagName('iframe')[0];
    if(frame != null) {
        frame.style.height = frame.contentWindow.document.body.scrollHeight + "px";
    }
}

应适用于所有主要浏览器。

代码只需更改一行即可在所有浏览器上正常工作。

而不是使用

var frame = document.getElementsByTagName('iframe')[0];

使用

var frame = document.getElementById("ctl00_ctl00_ContentPlaceHolder1_Options_iframe");

问题是Chrome和IE隐藏了iframe,当我们使用getElementsByTagName时,它会向我们返回所有iframe的数组。所以我们尝试访问[0]索引,它引用了其他一些iframe。

我希望这会有所帮助。

完整的代码是:

 function resizePanel() {
         var frame = document.getElementById("ctl00_ctl00_ContentPlaceHolder1_Options_iframe");
    if(frame != null) {
        var height;            
        if(self.innerHeight) {
            height= self.innerHeight;                             
        }
        else if (document.documentElement && (document.documentElement.clientHeight)) {
           height = document.documentElement.clientHeight;                       
         }
         else if(document.body) {
           height = document.body.clientHeight;            
         }
         frame.style.height = height - 165 + 'px'
    }};
    $(document).ready(function() {
        resizePanel();
        $(window).resize(function() {
            resizePanel();
        });
    });  
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(EndRequest);
    function EndRequest(sender, args) {
        resizePanel();
    }