H5之iframe


iframe 屬於HTML的三種結構之一的框結構(其余兩種樹結構和層結構),iframe是一個擁有獨立窗體的標簽,他非常損耗資源,不易過多使用

                <iframe src="nov24.html" width="100%" height="100%" frameborder="0" name="iframea"></iframe>
		<p><a href="https://www.baidu.com" target="iframea">BAIDU.COM</a></p>  

上面是一個簡單的iframe 


iframe是否會阻塞頁面的加載呢,答案是的,通常頁面首先會進行解析渲染,將html 文件解析為dom樹,在將css文件解析為css樹,最后合成為render樹,此時進行layout 計算各個元素節點在屏幕的位置,然后進行回流(當元素本身結構發生變化時)重繪(當元素本身屬性發生變化時,結構不變)最后渲染在瀏覽器上,這些操作完成之后才能進行onlaod事件加載,執行js操作。

如果此時有iframe嵌入在頁面中,那么渲染時需要等子頁面渲染完成之后才能進行父頁面的渲染,onload事件加載也會因此被阻塞

如果此時我們用js動態生成iframe,並且放在onload事件之后去觸發,那么此操作在chrome中不會阻塞頁面的onload事件,但其他瀏覽器的onload事件依舊會被阻塞。

瀏覽器 chrome safari firefox ie
是否阻塞瀏覽器頁面渲染 true true true true
是否阻塞瀏覽器頁面onload事件 false true true true

 

 

 

 

二、跨域

document.domain是比較常用的跨域方法。實現最簡單但只能用於同一個主域下不同子域之間的跨域請求,比如 foo.com 和 img.foo.com 之間,img1.foo.com 和 img2.foo.com 之間。只要把兩個頁面的document.domain都指向主域就可以了,比如document.domain='foo.com';。
設置好后父頁面和子頁面就可以像同一個域下兩個頁面之間訪問了。
父頁面通過ifr.contentWindow就可以訪問子頁面的window,子頁面通過parent.window或parent訪問父頁面的window,接下來可以進一步獲取dom和js。


免責聲明!

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



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