iframe父頁面與子頁面賦值


最近因為公司之前的系統用iframe,里面的高度不能自適應,導致了很多問題,今天特意拿來研究一下,從網上找了一些方法試驗了一下,這里記錄一下成功的方法

1、父頁面獲取子頁面的高度,並給父頁面賦值

父頁面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="myhtml">
        <iframe src="./bbb.html" frameborder="0" id="ifram"></iframe>
    </div>
</body>
</html>
<script>
    function setIframeHeight(id){
        var iframe = document.getElementById(id);
        try{
            if(iframe.attachEvent){
                iframe.attachEvent("onload", function(){
                    iframe.height =  iframe.contentWindow.document.documentElement.scrollHeight;
                });
                return;
            }else{
                iframe.onload = function(){
                    var obj = ifram.contentDocument || ifram.contentWindow.document;
                    iframe.height = obj.body.scrollHeight+16;
                };
                return;                 
            }     
        }catch(e){
            throw new Error('setIframeHeight Error');
        }
    }
    setIframeHeight("ifram");
</script>
<style>
    #ifram {
        width: 300px;
        border: 1px solid #ccc;
    }
</style>

iframe里面的元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="test">lalalalala</div>
</body>
</html>
<style>
    #test {
        height: 1000px;
    }
</style>

小結:為什么要加16,試驗了一下剛好差一個滾動條的高度,為了不出現雙滾動條,只能再把他的高加了一點。

另外只測試了chrome,在chrome下直接是不好使的,需要自己起一個服務,才不報錯,這在同源下做了測試。

2、子頁面給父頁面賦值

父頁面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="myhtml">
        <iframe src="./bbb.html" frameborder="0" id="ifram"></iframe>
    </div>
</body>
</html>
<style>
    #ifram {
        width: 300px;
        border: 1px solid #ccc;
    }
</style>

iframe里面的元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="test">lalalalala</div>
</body>
</html>
<script>
function setParentIframeHeight(id){
    try{
        var parentIframe = parent.document.getElementById(id);
         if(window.attachEvent){
            window.attachEvent("onload", function(){
                parentIframe.height = document.documentElement.scrollHeight;
            });
            return;
        }else{
            window.onload = function(){
                parentIframe.height = document.body.scrollHeight;
            };
            return;                 
        }     
    }catch(e){
        throw new Error('setParentIframeHeight Error');
    }
}
setParentIframeHeight("ifram");
</script>
<style>
    #test {
        height: 1000px;
    }
</style>

小結:通過parent.document.getElementById();  id是父頁面的id賦值,同樣只適用於同源


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM