麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

iframe窗口高度自適應(yīng)的又一個巧妙實現(xiàn)思路

2019-11-20 20:52:02
字體:
供稿:網(wǎng)友
domainA 中有一個頁面index.html,通過iframe嵌套了domainB中的一個頁面other.html
由于other.html頁面在iframe中顯示,而且其頁面內(nèi)容會動態(tài)的增加或減少,現(xiàn)在需要去掉iframe的滾動條
由于javascript同源策略的限制,無法進(jìn)行跨域操作,使得問題比較棘手
參考了一下網(wǎng)上的做法,引入了一個代理頁面,或者叫做中介 agent.html,屬于domainA
然后,在domainB 中的other.html中,再使用iframe將agent.html進(jìn)行嵌套

好了,現(xiàn)在情況是這樣的:

index.html 使用iframe 嵌套 other.html
other.html 使用iframe 嵌套 agent.html
之所以要引入第3個頁面agent.html,就是為了遵守“同源策略”的規(guī)則,完成不同domain下參數(shù)的傳遞!

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

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

index.html
復(fù)制代碼 代碼如下:

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

<hr>

<div style="color:red;font-weight:bold">窗口自適應(yīng)---繞開同源策略的限制,同時又利用同源策略,去掉iframe的滾動條,動態(tài)調(diào)整窗口的高度,讓其能夠顯示被嵌套頁面的所有內(nèi)容</div>
<!-- 需要動態(tài)調(diào)整高度的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
復(fù)制代碼 代碼如下:

<!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("調(diào)用同域下的函數(shù),重置iframe的高度");
var domainA = document.parentWindow;
var realHeight = domainA.location.hash.split("#")[1];
//last step:調(diào)用最上層窗口的函數(shù),重置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,因此可以訪問
}
//使用不同的時間戳設(shè)置iframe的src屬性后,就不用使用setInterval()
//setInterval("invokeMethodInTopWindow()",100);
</script>
</body>
</html>

domainB中的other.html
復(fù)制代碼 代碼如下:

<!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代碼能夠訪問的頁面內(nèi)容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內(nèi)容。
所謂同源是指,域名,協(xié)議,端口相同。
在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
這一策略對于JavaScript代碼能夠訪問的頁面內(nèi)容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內(nèi)容。
所謂同源是指,域名,協(xié)議,端口相同。
在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
這一策略對于JavaScript代碼能夠訪問的頁面內(nèi)容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內(nèi)容。
所謂同源是指,域名,協(xié)議,端口相同。
在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
這一策略對于JavaScript代碼能夠訪問的頁面內(nèi)容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內(nèi)容。
所謂同源是指,域名,協(xié)議,端口相同。
在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
這一策略對于JavaScript代碼能夠訪問的頁面內(nèi)容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內(nèi)容。
所謂同源是指,域名,協(xié)議,端口相同。
在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
這一策略對于JavaScript代碼能夠訪問的頁面內(nèi)容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內(nèi)容。
所謂同源是指,域名,協(xié)議,端口相同。
在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
這一策略對于JavaScript代碼能夠訪問的頁面內(nèi)容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內(nèi)容。
所謂同源是指,域名,協(xié)議,端口相同。
在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
這一策略對于JavaScript代碼能夠訪問的頁面內(nèi)容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內(nèi)容。
所謂同源是指,域名,協(xié)議,端口相同。
在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。
這一策略對于JavaScript代碼能夠訪問的頁面內(nèi)容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內(nèi)容。
所謂同源是指,域名,協(xié)議,端口相同。
</div>
<div style="display:block">
比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當(dāng)你使用真實的用戶名,密碼登錄時,
他的頁面就可以通過Javascript讀取到你的表單中input中的內(nèi)容,這樣用戶名,密碼就輕松到手了。
比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當(dāng)你使用真實的用戶名,密碼登錄時,
他的頁面就可以通過Javascript讀取到你的表單中input中的內(nèi)容,這樣用戶名,密碼就輕松到手了。
比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當(dāng)你使用真實的用戶名,密碼登錄時,
他的頁面就可以通過Javascript讀取到你的表單中input中的內(nèi)容,這樣用戶名,密碼就輕松到手了。
比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當(dāng)你使用真實的用戶名,密碼登錄時,
他的頁面就可以通過Javascript讀取到你的表單中input中的內(nèi)容,這樣用戶名,密碼就輕松到手了。
比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當(dāng)你使用真實的用戶名,密碼登錄時,
他的頁面就可以通過Javascript讀取到你的表單中input中的內(nèi)容,這樣用戶名,密碼就輕松到手了。
比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當(dāng)你使用真實的用戶名,密碼登錄時,
他的頁面就可以通過Javascript讀取到你的表單中input中的內(nèi)容,這樣用戶名,密碼就輕松到手了。
比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當(dāng)你使用真實的用戶名,密碼登錄時,
他的頁面就可以通過Javascript讀取到你的表單中input中的內(nèi)容,這樣用戶名,密碼就輕松到手了。
比如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當(dāng)你使用真實的用戶名,密碼登錄時,
他的頁面就可以通過Javascript讀取到你的表單中input中的內(nèi)容,這樣用戶名,密碼就輕松到手了。
</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);
//將窗口的高度先設(shè)置到屬于domainA的iframe的src屬性上
var iframeDomainA = document.getElementsByName("domainA")[0];
//用domainA的一個頁面作為代理,最終的目的是解決“同源策略”的限制
var url = "http://localhost:9000/agent";
/**技巧:通過時間戳讓瀏覽器每次重新加載iframe,這樣每次都會自動設(shè)置被嵌套的iframe的高度,避免了使用setInterval()*/
iframeDomainA.src = url+ "? time=" + new Date().getTime() + "#" + scrollHeight ;
}

window.onload = proxy;

</script>

</body>
</html>
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久草在线视频看看 | 久久精品一区二区三区四区五区 | av影院在线播放 | 久久久久久久亚洲视频 | 狠狠操精品视频 | 欧美精品久久久久久久久久 | 亚洲欧美日韩精品久久 | 精品国产一区二区三区四区阿崩 | 亚洲黑人在线观看 | 把娇妻调教成暴露狂 | 国产乱淫a∨片免费观看 | 日本aaaa片毛片免费观蜜桃 | 国产一区二区三区欧美 | 美女羞羞视频在线观看 | 国内精品久久久久久久影视红豆 | 精精国产xxxx视频在线播放7 | 国产91在线播放九色 | 黄视频免费在线 | 精品国产一级毛片 | www.91视频com | 精品一区二区三区中文字幕老牛 | 亚洲国产二区 | 免费观看一区二区三区 | 国产一级毛片国产 | 日韩2区 | 国产精品色综合 | 亚洲特黄a级毛片在线播放 久久久入口 | aaaaa国产欧美一区二区 | 久久成年人视频 | 国av在线 | 狠狠干91 | 久久国产精品久久久久久电车 | 久久久久北条麻妃免费看 | 成人在线观看免费爱爱 | 精品呦女 | 久久久久久久久久久av | 国产在线欧美日韩 | 香蕉视频网站在线观看 | 99国产精品自拍 | 在线成人影视 | 一区二区三区视频在线观看 |