Iframe用法精析 用於設定文字或圖形的浮動圖文框或容器。 BORDER 設定圍繞圖文框的邊緣寬度FRAMEBODER 設定邊框為否為3維(0=否,1=是) HEIGHT,WIDTH 設質邊框的寬度與高度SCROLLING 是否有捲軸(YES,NO,AUTO) SRC 指定IFRAME調用的檔案或圖片(HTML,HTM,GIF,JPEG,JPG,PNG,TXT,*.*) 「畫中畫」效果--談IFRAME標籤的使用縱觀時下網站,本來網速就有些慢,可是幾乎每頁都要放什麼Banner,欄位圖片,版權等一大堆雷同的東西,當然,出於網站風格統一、廣告效應的需要,本無可厚非,可畢竟讓用戶的錢包為這些「點綴「的東西」日益消得錢憔悴」了,有沒有辦法,讓這些雷同的東西一次下載後就不用再下載,而只下載那些內容有變化區域的網頁內容呢? 答案很肯定:應用Iframe標記! 一、Iframe標記的使用 提起Iframe,可能你早已將之扔到「被遺忘的角落」了,不過,說起其兄弟Frame就不會陌生了。 Frame標記即幀標記,我們所說的多幀結構就是在一個瀏覽器視窗中顯示多個HTML檔案。現在,我們遇到一種很現實的情況:如有一個教程,是一節一節地上,每頁末尾做一個“上一節“、“下一節“的鏈接,除了每節教程內容不同之外,頁面其它部分內容都是相同的,如果一頁一頁地做笨頁面,這似乎太讓人厭煩了,這時突發奇想,如果有一種方法讓頁面其它地方不變,只將教程做成一頁一頁的內容頁,不含其它內容,在點擊上下翻頁鏈接時,只改變教程內容部分,其它保持不變,這樣,一是省時,另則以後如教程有個三長兩短的變動,也很方便,不致於牽一發而動全軍了;更重要的是將那些廣告Banner、欄目列表、導航等幾乎每頁的都有的東西只下載一次後就不再下載了。 Iframe標記,又叫浮動訊框標記,你可以用它將一個HTML文件嵌入在一個HTML中顯示。它不同於Frame標記最大的特徵即這個標記所引用的HTML文件不是與另外的HTML文件相互獨立顯示,而是可以直接嵌入在一個HTML文件中,與這個HTML文件內容相互融合,成為一個整體,另外,還可以多次在一個頁面內顯示同一內容,而不必重複寫內容,一個形象的比喻即“畫中畫“電視。 現在我們來談談Iframe標記的使用。 Iframe標記的使用格式是: 複製代碼代碼如下: src:檔案的路徑,既可是HTML文件,也可以是文本、ASP等; width、height:"畫中畫"區域的寬與高; scrolling:當SRC的指定的HTML文件在指定的區域不顯不完時,滾動選項,如果設定為NO,則不出現滾動條;如為Auto:則自動出現滾動條;如為Yes,則顯示; FrameBorder:區域邊框的寬度,為了讓「畫中畫「與鄰近的內容融合,常設定為0。 比如: 複製代碼代碼如下: 二、父窗體與浮動幀之間的相互控制在腳本語言與對象層次中,包含Iframe的窗口我們稱之為父窗體,而浮動幀則稱為子窗體,弄清這兩者的關係很重要,因為要在父窗體中存取子窗體或相反都必須清楚物件層次,才能透過程式來存取並控制窗體。 1、在父窗體中存取並控制子窗體中的對象在父窗體中,Iframe即子窗體是document對象的子對象,可以直接在腳本中存取子窗體中的對象。 現在就有一個問題,即,我們怎麼來控制這個Iframe,這裡需要講一下Iframe物件。當我們為這個標記設定了ID 屬性後,就可透過文檔物件模型DOM對Iframe所含的HTML進行一系列控制。 例如在example.htm裡嵌入test.htm文件,並控制test.htm裡一些標記對象:複製程式碼複製程式碼 複製程式碼複製程式碼 複製程式碼複製程式碼代碼如下: test.htm檔案代碼為: hello,my boy 如我們要改變ID號為myH1的H1標記裡的文字為hello,my dear,則可用: document.myH1.innerText ="hello,my dear"(其中,document可省) 在example.htm檔案中,Iframe標記物件所指的子窗體與一般的DHTML物件模型一致,對物件存取控制方式一樣,就不再贅述。 2 、在子窗體中存取並控制父窗體中物件 在子窗體中我們可以透過其parent即父(雙親)物件來存取父視窗中的物件。 如 example.htm:複製程式碼程式碼如下:程式碼如下: 程式碼如下: 程式碼html> hello,my wife 如果要在frame1.htm中訪問ID號為myH2中的標題文字並將之改為"hello,my friend",我們就可以這樣寫: parent.myH2.innerText="hello, my friend" 這裡parent對象就代表當前窗體(example.htm所在窗體),要在子窗體中訪問父窗體中的對象,無一例外都透過parent對象來進行。 Iframe雖然內嵌在另一個HTML檔案中,但它保持相對的獨立,是一個「獨立王國「喲,在單一HTML中的特性同樣適用於浮動幀中。 試想一下,透過Iframe標記,我們可將那些不變的內容以Iframe來表示,這樣,不必重複寫相同的內容,這有點象程序設計中的過程或函數,減省了多少繁瑣的手工勞動!另外,至關重要的是,它使頁面的修改更為可行,因為,不必因為版式的調整而修改每個頁面,你只需修改一個父窗體的版式即可了。 有一點要注意,Nestscape瀏覽器不支援Iframe標記,但在時下IE的天下,這似乎也無大礙,廣泛採用Iframe標記,既為自己(網站)著了想,又為網友節省了網費,何樂而不為? 例子複製代碼代碼如下: 2:::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::: 用了iframe後發現捲軸不漂亮想用2張圖片來代替↑↓ 該怎麼實現呢? 回答: 用下列程式碼取代網頁的 複製程式碼複製程式碼程式碼如下: ..標題> 函數滾動(n) {temp=n; Out1.scrollTop=Out1 .scrollTop 溫度; if (temp==0) 回傳; setTimeout("滾動(暫時)",80); } 文字文字 文字 文字 文字 複製程式碼複製程式碼 程式碼🎜> > ; src:檔案的路徑,既可是HTML文件,也可以是文字、ASP等; width、height:"內部框架"區域的寬與高; scrolling:當SRC的指定的HTML文件在指定的區域不顯不完時,滾動選項,如果設定為NO,則不出現滾動條;如為Auto:則自動出現滾動條;如為Yes,則顯示; FrameBorder:區域眉毛的寬度,為了讓「內部框架」與鄰近的內容融合,常設定為0。 name:框架的名稱,用於進行識別。 例如: 當你想用父框架控制內部框架時,可以使用: target="框架的名稱"來控制。 IFrame 也可以編輯文字 除了 form() 沒有相反除了還有其他的網頁元素都可以編輯文字呢?只要使用IFrame的隱藏的一個屬性就可以使IFrame成為一個文字編輯器。 ; ; 身體> 其中designMode屬性表示IFrame的設計模式的狀態(開/關),還在緊張,快試試看吧! 只要解決利用這個特性就可以產生很多意想不到的效果。下面我們提供一個圖片編輯器。 ; 身體> 下面使更多的補充:是框架的一種形式,也比較常用。 例子1。 不用多說了。 width插入頁的寬;height插入頁的高;scrolling 是否顯示頁面滾動條(可選的參數為auto、yes、no,如果省略此參數,則預設為auto);frameborder 邊框大小; 注意:URL建議用絕對路徑 傳說中百DU用: 黑了88*8。 。 。 範例2。 如果一個頁裡面有框架。 。隨便點頁面裡的連接,要求在這個 裡打開。在iframe 中加入name=**(**自己設定) 然後在修改預設開啟模式,:網頁HEAD中加上或部分連接的目標框架設為(**) 範例3。 要插入一個頁面。要求只拿中間一部分。其他的都不要。 ,。 。 程式碼: 控制插入頁被框架覆蓋的深度marginwidth=0 marginheight=0;控制框架覆蓋上部分的深度vspace=-170 scrolling滾動條要否(auto、 yes、no) frameborder框架的邊框大小,width=776 height=2500此框架的大小。 一、頁內加入iframe , scrolling表示是否顯示頁面捲軸,可選的參數為auto、yes、no,如果省略這個參數,則預設為auto。 二、超連結指向這個嵌入的網頁,只要給這個iframe命名就可以了。方法是,例如我命名為aa,寫入這句HTML語言 iframe>,然後,網頁上的超連結語句應該寫為: 三、如果把frameborder設為1,效果就像文字方塊一樣 透明的IFRAME的用法 必需IE5.5以上版本才支援 在transparentBody.htm檔案的標籤中,我已經加入了style="background-color=transparent" 透過以下四種IFRAME的寫法我想大概你對iframe背景透明效果的實現方法應該會有個清晰的了解: 重點1:利用javascript指定iframe的src並重新載入該iframe(請看本文最下面我的項目) 困難1:設定iframe的背景色a.htm <br />function setBG(){ <br />var strColor=document.bgColor; < <br />frm.document.bgColor=strColor; <br />} <br /> 困難2: 視窗與浮動訊框之間的相互控制在腳本語言與物件層次中,包含Iframe的視窗我們稱之為父窗體,而浮動幀則稱為子窗體,弄清這兩者的關係很重要,因為要在父窗體中訪問子窗體或相反都必須清楚對象層次,才能透過程式來存取並控制窗體。 1、在父窗體中存取並控制子窗體中的對象 在父窗體中,Iframe即子窗體是document對象的子對象,可以直接在腳本中存取子窗體中的對象。 現在就有一個問題,即,我們怎麼來控制這個Iframe,這裡需要講一下Iframe物件。當我們為這個標記設定了ID 屬性後,就可透過文檔物件模型DOM對Iframe所含的HTML進行一系列控制。 例如在example.htm裡嵌入test.htm文件,並控制test.htm裡一些標記對象: test.htm文件代码为: hello,my boy 如我们要改变ID号为myH1的H1标记里的文字为hello,my dear,则可用: document.myH1.innerText="hello,my dear"(其中,document可省) 在example.htm文件中,Iframe标记对象所指的子窗体与一般的DHTML对象模型一致,对对象访问控制方式一样,就不再赘述。 2、在子窗体中访问并控制父窗体中对象 在子窗体中我们可以通过其parent即父(双亲)对象来访问父窗口中的对象。 如example.htm: hello,my wife 如果要在frame1.htm中访问ID号为myH2中的标题文字并将之改为"hello,my friend",我们就可以这样写: parent.myH2.innerText="hello,my friend" 或者parent.document.getElementById("myH2").innerText="hello,my friend" 这里parent对象就代表当前窗体(example.htm所在窗体),要在子窗体中访问父窗体中的对象,无一例外都通过parent对象来进行。 3:frame的一个子元素访问frame的另一个子元素 例如:框架文件frame.html中嵌入了另外两个html文件 那么现在要在DirectoryTree.html文件中访问Search.html文件中的一个id为section的标签的innerHTML属性,则可以这样: alert(parent.document.search.section.innerHTML), 其中search是“搜索”div的id,或者: alert(parent.document.getElementById("search").section.innerHTML), 或者也可以这样: alert(parent.document.frames["frameSublist"].name)(这是直接访问iframe) Iframe虽然内嵌在另一个HTML文件中,但它保持相对的独立,是一个“独立王国“哟,在单一HTML中的特性同样适用于浮动帧中。 试想一下,通过Iframe标记,我们可将那些不变的内容以Iframe来表示,这样,不必重复写相同的内容,这有点象程序设计中的过程或函数,减省了多少繁琐的手工劳动!另外,至关重要的是,它使页面的修改更为可行,因为,不必因为版式的调整而修改每个页面,你只需修改一个父窗体的版式即可了。 要注意的是,Nestscape6.0之前版本不支持Iframe标记。 例子: 1::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 2::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 用了iframe后 发现滚动条不漂亮 想用2个图片来代替↑↓ 应该怎么实现呢? 回答: 用下列代码替换网页的.. <br />function scroll(n) <br />{temp=n; <br />Out1.scrollTop=Out1.scrollTop+temp; <br />if (temp==0) return; <br />setTimeout("scroll(temp)",80); <br />} <br /> 文字 文字 文字 文字 文字 :::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::: 下面這段程式碼可以實現IFrame自適應高度,即隨著頁面的長度,自動適應以免除頁面和IFrame同時出現捲軸。 原始碼如下 <br />//**iframe自動適應頁面 **// <br />//輸入你希望根據頁面高度自動調整高度的iframe的名稱的列表<br />//用逗號把每個iframe的ID分隔. 例如: ["myframe1", "myframe2"],可以只有一個窗體,則不用逗號。 <br />//定義iframe的ID <br />var iframeids=["test"] <br />//如果使用者的瀏覽器不支援iframe是否將iframe隱藏yes 表示隱藏,no表示不隱藏<br />var iframehide ="yes" <br />function dyniframesize() <br />{ <br />var dyniframe=new Array() <br />for (i=0; i<iframeids.length; i ) <br />{ <br />if (document.getElementById) <br />{ <br />//自動調整iframe高度<br />dyniframe[dyniframe.length] = document.getElementById(iframeids); <br />if (dynidowame && !win.opera) <. { <br />dyniframe.style.display="block" <br />if (dyniframe.contentDocument && dyniframe.contentDocument.body.offsetHeight) //如果使用者的瀏覽器是NetScape <br />dyniframe.height = dyniframe.Document. body.offsetHeight; <br />else if (dyniframe.Document && dyniframe.Document.body.scrollHeight) //如果使用者的瀏覽器是IE <br />dyniframe.height = dyniframe.Document.body.scrollHeight; <br />} <br />//根據設定的參數來處理不支援iframe的瀏覽器的顯示問題<br />if ((document.all || document.getElementById) && iframehide=="no") <br />{ <br />var tempobj=document.all? document.all[iframeids] : document.getElementById(iframeids) <br />tempobj.style.display="block" <br />} <br />} <br />} <br />} <br />if (window.addEventListener) <br />window.addEventListener("load", dyniframesize, false) <br />else if (window.attachEvent) <br />window.attachEvent("onload", dyniframesize) <🎜 <br />window.onload=dyniframesize <br /> HTML 標籤定義和用法iframe 元素會建立一個包含另一個文件的內聯框架。 HTML 與 XHTML 之間的差異 NONE 可選的屬性 DTD 指示此屬性允許在哪種 DTD 中使用。 S=Strict, T=Transitional, F=Frameset. 屬性值描述DTD align left right top middle bottom 規定如何根據周圍的文字來排列此框架。 TF frameborder 1 0 規定是否顯示框架的邊框。 TF height pixels % 定義 iframe 的高度。 TF longdesc URL 描述此框架內容的長描述的URL。 TF marginheight pixels 定義 iframe 的頂部和底部的邊距。 TF marginwidth pixels 定義 iframe 的左側和右側的邊距。 TF name frame_name 規定 iframe 的唯一名稱 (以便在腳本中使用)。 TF scrolling yes no auto 定義捲軸。 TF src URL 在 iframe 中顯示文件的 URL。 TF width pixels % 定義 iframe 的寬度。 TF 以下是自己在實際專案開發時利用frame寫的一段原始碼,僅供參考: 主檔案(框架): 教育局資源管理系統 <br />function setBgColor() <br />{ <br />var bg=document.bgColor <br />bottom.document>bottom.document .bgColor=bg <br />} <br /> 身體> 被引用的檔案 UserLogin.html: td> 會員登入 表> 表> 使用者名稱: 密碼: 表> 現在假設“最新主題列表”文件中有一個超鏈接,點擊其,包含“最新主題列表”的iframe就重新加載,此時需要利用javascript來實現: www.baidu.com; 函數重定向() { parent.document .frames["frameSublist"].location.href="www.baidu.com" } ;