亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

iframe窗口高度自適應的實現方法

2019-11-20 21:17:34
字體:
來源:轉載
供稿:網友

domainA 中有一個頁面index.html,通過iframe嵌套了domainB中的一個頁面other.html
由于other.html頁面在iframe中顯示,而且其頁面內容會動態的增加或減少,現在需要去掉iframe的滾動條
由于javascript同源策略的限制,無法進行跨域操作,使得問題比較棘手
參考了一下網上的做法,引入了一個代理頁面,或者叫做中介 agent.html,屬于domainA
然后,在domainB 中的other.html中,再使用iframe將agent.html進行嵌套

好了,現在情況是這樣的:
index.html 使用iframe 嵌套 other.html
other.html 使用iframe 嵌套 agent.html
之所以要引入第3個頁面agent.html,就是為了遵守“同源策略”的規則,完成不同domain下參數的傳遞!

我們最終的目的是要去掉滾動條,又要保證被嵌入的頁面內容全部得到顯示
1.取得other.html頁面的實際高度height
2.將height設置到其嵌入的iframe的src屬性上
3.在agent.html中截取出所屬iframe的src屬性中的height值

下面的例子中,使用了一個技巧,避免了使用setInterval()不斷去設置iframe的高度
做法是在iframe的src上,附加一個時間戳,讓瀏覽器每次都重新加載agent.html
進而讓agent.hml中的js函數invokeMethodInTopWindow()得到執行
domainA 中的2個html
index.html

復制代碼 代碼如下:

#{extends 'main.html' /}
#{set title:'Home' /}

<hr>

<div style="color:red;font-weight:bold">窗口自適應---繞開同源策略的限制,同時又利用同源策略,去掉iframe的滾動條,動態調整窗口的高度,讓其能夠顯示被嵌套頁面的所有內容</div>
<!-- 需要動態調整高度的iframe -->
<div style="text-align:center;">
    <iframe name="domainB" src="http://127.0.0.1:8088/other" width="80%" scrolling="no" frameborder="0"></iframe>
</div>

<script type="text/javascript">
    function resize(height) {
        //alert("resize");
        document.getElementsByName("domainB")[0].height=height;
    }
</script>

agent.html

復制代碼 代碼如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    我是代理頁面哦!
<script type="text/javascript">
    window.onload = invokeMethodInTopWindow;
    function invokeMethodInTopWindow() {
        //alert("調用同域下的函數,重置iframe的高度");
        var domainA = document.parentWindow;
        var realHeight = domainA.location.hash.split("#")[1];
        //last step:調用最上層窗口的函數,重置iframe的高度
        parent.parent.resize(realHeight);

        //alert("realHeight:"+realHeight);
        //alert(document.parentWindow.name);//獲取容器所在窗口的名稱 domainA
        //error://alert(document.parentWindow.parent.name); //訪問失敗 :不能訪問domainB
        //alert(document.parentWindow.parent.parent.name);//最頂層window屬于domainA,因此可以訪問
    }
    //使用不同的時間戳設置iframe的src屬性后,就不用使用setInterval()
    //setInterval("invokeMethodInTopWindow()",100);
</script>
</body>
</html>

domainB中的other.html

復制代碼 代碼如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body onclick="proxy()">
    <!-- 被A域所嵌入的頁面 -->
    <button type="button" onclick="btnClick()">切換顯示</button>

    <div style="display:none">
        在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
        這一策略對于JavaScript代碼能夠訪問的頁面內容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內容。
        所謂同源是指,域名,協議,端口相同。
        在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
        這一策略對于JavaScript代碼能夠訪問的頁面內容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內容。
        所謂同源是指,域名,協議,端口相同。
        在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
        這一策略對于JavaScript代碼能夠訪問的頁面內容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內容。
        所謂同源是指,域名,協議,端口相同。
        在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
        這一策略對于JavaScript代碼能夠訪問的頁面內容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內容。
        所謂同源是指,域名,協議,端口相同。
        在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
        這一策略對于JavaScript代碼能夠訪問的頁面內容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內容。
        所謂同源是指,域名,協議,端口相同。
        在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
        這一策略對于JavaScript代碼能夠訪問的頁面內容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內容。
        所謂同源是指,域名,協議,端口相同。
        在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
        這一策略對于JavaScript代碼能夠訪問的頁面內容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內容。
        所謂同源是指,域名,協議,端口相同。
        在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
        這一策略對于JavaScript代碼能夠訪問的頁面內容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內容。
        所謂同源是指,域名,協議,端口相同。
        在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
        這一策略對于JavaScript代碼能夠訪問的頁面內容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內容。
        所謂同源是指,域名,協議,端口相同。
    </div>
    <div style="display:block">
        比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登錄時,
        他的頁面就可以通過Javascript讀取到你的表單中input中的內容,這樣用戶名,密碼就輕松到手了。
        比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登錄時,
        他的頁面就可以通過Javascript讀取到你的表單中input中的內容,這樣用戶名,密碼就輕松到手了。
        比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登錄時,
        他的頁面就可以通過Javascript讀取到你的表單中input中的內容,這樣用戶名,密碼就輕松到手了。
        比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登錄時,
        他的頁面就可以通過Javascript讀取到你的表單中input中的內容,這樣用戶名,密碼就輕松到手了。
        比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登錄時,
        他的頁面就可以通過Javascript讀取到你的表單中input中的內容,這樣用戶名,密碼就輕松到手了。
        比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登錄時,
        他的頁面就可以通過Javascript讀取到你的表單中input中的內容,這樣用戶名,密碼就輕松到手了。
        比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登錄時,
        他的頁面就可以通過Javascript讀取到你的表單中input中的內容,這樣用戶名,密碼就輕松到手了。
        比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登錄時,
        他的頁面就可以通過Javascript讀取到你的表單中input中的內容,這樣用戶名,密碼就輕松到手了。
    </div>

    <!-- 反向嵌入A域的頁面 -->
    <iframe name="domainA" src="" style="display:none"></iframe>

    <!-- script -->
    <script type="text/javascript">
        //隱藏或顯示div
        function btnClick() {
            var div = document.getElementsByTagName("div");
            for(var i in div) {
                if(i<div.length)               
                    div[i].style.display = (div[i].style.display == 'none') ? "block" : "none";
            }
        }
    </script>

    <script type="text/javascript">
        function proxy(){
            //alert("btn click");
            //獲取本頁面的高度
            var scrollHeight = document.documentElement.scrollHeight;
            //alert("滾動條高度:"+scrollHeight);
            //將窗口的高度先設置到屬于domainA的iframe的src屬性上
            var iframeDomainA = document.getElementsByName("domainA")[0];
            //用domainA的一個頁面作為代理,最終的目的是解決“同源策略”的限制 
            var url = "http://localhost:9000/agent";
            /**技巧:通過時間戳讓瀏覽器每次重新加載iframe,這樣每次都會自動設置被嵌套的iframe的高度,避免了使用setInterval()*/
            iframeDomainA.src = url+ "? time=" + new Date().getTime() + "#" + scrollHeight ;
        }

        window.onload = proxy;

    </script>

</body>
</html>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美人交a欧美精品| 中文字幕亚洲一区二区三区五十路| 欧美极品少妇与黑人| 精品亚洲永久免费精品| 成人亲热视频网站| 国产精品视频26uuu| 97碰在线观看| 亚洲高清久久久久久| 欧美极品少妇全裸体| 日韩精品在线私人| 欧美国产日本高清在线| 中文字幕亚洲综合久久| 尤物九九久久国产精品的分类| 欧美激情2020午夜免费观看| 成人一区二区电影| 久久精品国产96久久久香蕉| 国外成人在线直播| 亚洲精品成人网| 欧美日韩aaaa| 91高清在线免费观看| 91九色综合久久| 日本欧美一二三区| 国产精品美女主播在线观看纯欲| 亚洲国产精品嫩草影院久久| 亚洲欧美在线播放| 日韩综合中文字幕| 在线成人免费网站| 久久久欧美精品| 欧美国产日韩一区二区在线观看| 91高清在线免费观看| 亚洲剧情一区二区| 亚洲另类欧美自拍| 91亚洲精品久久久久久久久久久久| 日韩一区二区精品视频| 久久精品免费电影| 久久综合88中文色鬼| 动漫精品一区二区| 日韩在线国产精品| 97av在线影院| 国产精品∨欧美精品v日韩精品| 自拍偷拍亚洲在线| 欧美性理论片在线观看片免费| 国产做受69高潮| 日韩av在线免费看| 国产又爽又黄的激情精品视频| 国产精品久久av| 欧美老女人bb| 国产精品av网站| 伊人av综合网| 亚洲人a成www在线影院| 精品久久久中文| 国产精品夫妻激情| 国产精品69av| 精品国产乱码久久久久酒店| 中文字幕亚洲综合久久| 欧美黑人极品猛少妇色xxxxx| 欧美电影免费观看网站| 亚洲成人激情图| 日韩中文字幕视频| 欧美猛少妇色xxxxx| 国产精品偷伦一区二区| 亚洲国产精品成人va在线观看| 国产一区二区三区三区在线观看| 国产精品亚洲一区二区三区| 欧美日韩精品在线视频| 色播久久人人爽人人爽人人片视av| 97人洗澡人人免费公开视频碰碰碰| 国产精品嫩草影院久久久| 精品久久久久久亚洲国产300| 国产精品免费视频久久久| 精品国偷自产在线视频| 高清在线视频日韩欧美| 九九精品视频在线观看| 精品中文字幕在线观看| 亚洲欧美另类人妖| 一区二区三区四区视频| 国产婷婷成人久久av免费高清| 色综合亚洲精品激情狠狠| 日韩欧美在线视频| 亚洲毛片在线免费观看| 亚洲第一福利在线观看| 国内精品久久久久久中文字幕| 亚洲精品aⅴ中文字幕乱码| 色综合老司机第九色激情| 欧美一区二区三区图| 色噜噜狠狠狠综合曰曰曰| 日韩av中文字幕在线播放| 伊人一区二区三区久久精品| 欧美一级高清免费| 久久成年人免费电影| 欧美视频在线免费| 国产综合福利在线| 久久国产精品久久精品| 欧美激情国产精品| 91成人福利在线| 欧美激情网友自拍| 精品色蜜蜜精品视频在线观看| 97国产精品视频人人做人人爱| 久久精品99无色码中文字幕| 国产精品视频精品| 91精品国产综合久久香蕉最新版| 日本亚洲欧洲色| 亚洲伊人成综合成人网| 久久影院在线观看| 色青青草原桃花久久综合| 精品久久久视频| 成人美女免费网站视频| 国产精品成人播放| 精品无人区太爽高潮在线播放| 欧美猛少妇色xxxxx| www.欧美免费| 91在线观看免费高清| 日韩精品久久久久久久玫瑰园| 韩曰欧美视频免费观看| xvideos亚洲人网站| 91性高湖久久久久久久久_久久99| 91久久久久久久久| 亚洲美女在线视频| 国内精品久久影院| xvideos亚洲| 中文字幕一区电影| 国产精品旅馆在线| 日韩av在线天堂网| 91影院在线免费观看视频| 成人av色在线观看| 日韩av中文字幕在线播放| 亚洲欧美日本另类| 91中文在线观看| 国产精品福利无圣光在线一区| 欧美大秀在线观看| 亚洲一级免费视频| 国产一区二区三区在线免费观看| 青青青国产精品一区二区| 国产99久久精品一区二区永久免费| 在线a欧美视频| 欧美日韩免费区域视频在线观看| 欧美亚洲伦理www| 欧美一区三区三区高中清蜜桃| 亚洲欧美中文字幕在线一区| 欧美性videos高清精品| 久久国产精品久久久久久久久久| 91久久综合亚洲鲁鲁五月天| 欧美风情在线观看| 国产精品91视频| 亚洲va欧美va国产综合久久| 日韩在线播放av| 成人亲热视频网站| 国产一区二区精品丝袜| 欧美激情一区二区三区在线视频观看| www.国产一区| 国产91成人在在线播放| 91精品国产亚洲| 欧美高清视频免费观看| 97国产suv精品一区二区62| 毛片精品免费在线观看| 亚洲欧美一区二区精品久久久| 国产亚洲a∨片在线观看| 国产精品一区二区在线| 国内精品美女av在线播放| 97免费中文视频在线观看| 亚洲精品98久久久久久中文字幕| 欧美亚洲成人网| 欧美日韩亚洲天堂| 日本道色综合久久影院|