Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态设置iframe高度;不在ie和chrome上工作_Javascript_Jquery_Iframe_Cross Browser - Fatal编程技术网

Javascript 动态设置iframe高度;不在ie和chrome上工作

Javascript 动态设置iframe高度;不在ie和chrome上工作,javascript,jquery,iframe,cross-browser,Javascript,Jquery,Iframe,Cross Browser,我试图使用javascript和Jquery动态设置iframe的高度 但由于某些原因,这在Ie8和chrome中不起作用。(但在firefox上运行良好) 有人能帮忙吗 谢谢 function resizePanel() { window.console.log("ran the resize panel function"); var frame = document.getElementsByTagName('iframe')[0]; if(frame

我试图使用javascript和Jquery动态设置iframe的高度

但由于某些原因,这在Ie8和chrome中不起作用。(但在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];
使用

问题是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();
    }
 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();
    }