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

首頁 > 編程 > JavaScript > 正文

iframe窗口高度自適應的又一個巧妙實現思路

2019-11-20 20:52:02
字體:
來源:轉載
供稿:網友
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
最近2019免费中文字幕视频三| 日本精品久久久| 555www成人网| 久久青草精品视频免费观看| …久久精品99久久香蕉国产| 性日韩欧美在线视频| 日韩电影免费在线观看| 一区二区三区在线播放欧美| 亚洲精品福利资源站| 国产精品精品一区二区三区午夜版| 国产偷国产偷亚洲清高网站| 最近2019中文字幕一页二页| 97碰碰碰免费色视频| 国产精品一区二区久久久久| 国产在线拍偷自揄拍精品| **欧美日韩vr在线| 在线日韩日本国产亚洲| 欧美一级淫片aaaaaaa视频| 国产精品免费看久久久香蕉| 国产精品一区二区三区久久久| 国产精品欧美激情| 亚洲护士老师的毛茸茸最新章节| 国产精品久久久久福利| www.欧美精品| 国产一区玩具在线观看| 日本中文字幕成人| 亚洲香蕉在线观看| 国产日韩中文字幕在线| 久久久久北条麻妃免费看| 国产一区红桃视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 伊人伊成久久人综合网小说| 国产精品成人免费电影| 成人欧美一区二区三区在线湿哒哒| 亚洲精品久久视频| 亚洲国产精彩中文乱码av在线播放| 91精品国产九九九久久久亚洲| 亚洲性生活视频| 精品久久久久久亚洲国产300| 91精品国产色综合久久不卡98| 亚洲精品国产精品国自产在线| 亚洲人成网站色ww在线| 欧美在线国产精品| 亚洲伊人久久综合| 久久国产精品99国产精| 欧美午夜片欧美片在线观看| 国产视频亚洲精品| 国产精品青青在线观看爽香蕉| 国产成人久久久精品一区| 国产精品爱久久久久久久| 国产精品欧美一区二区三区奶水| 欧美大胆在线视频| 欧美成人免费全部| 精品小视频在线| 亚洲大尺度美女在线| 亚洲a∨日韩av高清在线观看| 亚洲欧美在线x视频| 亚洲第一网站男人都懂| 久久手机免费视频| 欧美福利视频在线观看| 欧美成人免费一级人片100| 欧美日韩性生活视频| 欧美日韩亚洲天堂| 亚洲日本成人网| 欧美另类高清videos| 国产精品美腿一区在线看| 影音先锋欧美精品| 国产日韩专区在线| 久久久久久久成人| 日韩在线激情视频| 国产精品一区av| 欧美丝袜美女中出在线| 国产精品jvid在线观看蜜臀| 日韩禁在线播放| 欧美日韩电影在线观看| 精品亚洲一区二区三区四区五区| 国产精品成人观看视频国产奇米| 久久99热这里只有精品国产| 欧美精品videos另类日本| 亚洲最大中文字幕| 欧美一级片久久久久久久| 久久亚洲精品小早川怜子66| 欧美一级淫片丝袜脚交| 91高清视频免费观看| 性欧美视频videos6一9| 国产69精品久久久久9| 97色在线视频| 亚洲国产精品va在线观看黑人| 亚洲第一国产精品| 久久九九免费视频| 亚洲国产高清高潮精品美女| 久久精品国产一区| 亚洲免费视频在线观看| 欧美日本中文字幕| 午夜精品一区二区三区在线播放| 欧美成人第一页| 欧美一区二区.| 日本久久久久久久久久久| 久国内精品在线| 国产一区二区三区丝袜| 日韩有码在线视频| 日韩在线视频二区| 国产欧美精品一区二区三区介绍| 高潮白浆女日韩av免费看| 亚洲欧美日韩国产中文专区| 欧美成人性色生活仑片| 日韩最新免费不卡| 91精品视频免费看| 美日韩精品视频免费看| 欧美激情精品在线| 久久视频在线直播| 日韩av男人的天堂| 一本一本久久a久久精品综合小说| 欧美激情亚洲视频| 欧美日韩精品在线播放| 亚洲欧美国产日韩中文字幕| 亚洲综合大片69999| 一区二区三区精品99久久| 亚洲精品一区中文| 国产成人福利视频| 久久成人人人人精品欧| 在线不卡国产精品| 91在线免费网站| 全色精品综合影院| 国产日韩欧美在线观看| 成人av番号网| 国产aⅴ夜夜欢一区二区三区| 色吧影院999| 日韩中文在线视频| 欧美激情图片区| 91成品人片a无限观看| 国内偷自视频区视频综合| 日韩第一页在线| 日韩在线视频网站| 国产精品成人观看视频国产奇米| 97视频在线观看免费| 欧美肥老太性生活视频| 色噜噜久久综合伊人一本| 91久久久在线| 亚洲精品国精品久久99热一| 日本aⅴ大伊香蕉精品视频| 亚洲综合中文字幕在线观看| 成人午夜在线视频一区| 成人网页在线免费观看| 亚洲国产精品字幕| 久久久精品视频成人| 中文字幕欧美专区| 91免费在线视频网站| 91精品国产电影| 2019中文字幕全在线观看| 亚洲黄页视频免费观看| 精品国产乱码久久久久久虫虫漫画| 日韩在线视频一区| 午夜欧美大片免费观看| 欧美在线观看日本一区| 欧美最近摘花xxxx摘花| 久久精品一偷一偷国产| 精品日韩中文字幕| 久久国产精品视频| 在线播放亚洲激情| 久久久精品国产网站| 亚洲大尺度美女在线| 日韩av快播网址| 久久中文字幕国产|