首頁 > web前端 > js教程 > iframe視窗高度自適應的另一個巧妙實現思路_javascript技巧

iframe視窗高度自適應的另一個巧妙實現思路_javascript技巧

WBOY
發布: 2016-05-16 16:53:25
原創
1529 人瀏覽過

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' /}




視窗自適應---繞過同源策略的限制,同時利用同源策略,去除iframe的捲軸,動態調整視窗的高度,讓其能夠顯示被嵌套頁的所有內容





agent.html


複製程式碼



複製程式碼



複製程式碼



複製程式碼


程式碼如下:






Insert title here


我是代理頁面哦!
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); domainB中的other.html 複製程式碼 程式碼如下:





Insert title here






在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只能访问与包含它的文档在同一域下的内容。
所谓同源是指,域名,协议,端口相同。


例如一個黑客程序,他利用IFrame把真正的銀行登錄頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登錄時,
他的頁面就可以透過Javascript讀取到你的表單中input中的內容,這樣用戶名,密碼就輕鬆到手了。
例如一個駭客程序,他利用IFrame把真正的銀行登入頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登入時,
他的頁面就可以透過Javascript讀取到你的表單中input的內容,這樣使用者名,密碼就輕鬆到手了。
例如一個駭客程序,他利用IFrame把真正的銀行登入頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登入時,
他的頁面就可以透過Javascript讀取到你的表單中input的內容,這樣使用者名,密碼就輕鬆到手了。
例如一個駭客程序,他利用IFrame把真正的銀行登入頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登入時,
他的頁面就可以透過Javascript讀取到你的表單中input的內容,這樣使用者名,密碼就輕鬆到手了。
例如一個駭客程序,他利用IFrame把真正的銀行登入頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登入時,
他的頁面就可以透過Javascript讀取到你的表單中input的內容,這樣使用者名,密碼就輕鬆到手了。
例如一個駭客程序,他利用IFrame把真正的銀行登入頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登入時,
他的頁面就可以透過Javascript讀取到你的表單中input的內容,這樣使用者名,密碼就輕鬆到手了。
例如一個駭客程序,他利用IFrame把真正的銀行登入頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登入時,
他的頁面就可以透過Javascript讀取到你的表單中input的內容,這樣使用者名,密碼就輕鬆到手了。
例如一個駭客程序,他利用IFrame把真正的銀行登入頁面嵌到他的頁面上,當你使用真實的用戶名,密碼登入時,
他的頁面就可以透過Javascript讀取到你的表單中input的內容,這樣使用者名,密碼就輕鬆到手了。



相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板