<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Hopes

    Start Here..

     

    VS2005里Frameset的使用方法

    VS2005里Frameset的使用方法
    一. 建立Frame 
    1.建立一個基本的Frame 
    2.建立frame之間的鏈接 
    3.美化你的Frame 
    4.浮動(float)Frame 
    二. 使用Frame 
    1.當我們使用Frame 
    2.設計一個含框架(Frame)的站點 
    三. 關于Frame的腳本 
    1.Frame導航的腳本 
    2.動態Frames腳本 
    3.Frame窗口間的腳本影響 
    4.浮動Frame的腳本 
    5.預防腳本出錯 
    ----------------------------------------------------- 
    前言 
    Frame是HTML中用來設置框架的標簽。框加可以在一個頁面里開設多個窗口,以滿足不同的設計需要,例如:將網站的菜單導航部分固定在一個窗口中,可以減少相同頁面下載時間。從Navigator 2.0允許使用Frame標簽開始,現在大部分的瀏覽器都支持frame標簽,并且已經成為HTML 4.0的標準規范。我們的文章分三部分: 
    一. 建立Frame 
    學習Frame標簽的最好辦法是直接建立Frame網頁。 
    二. 使用Frame 
    熟練掌握Frame,可以成為你設計制作的得力助手。使用不好,則會產生麻煩討厭的結果。我們將幫助你正確使用Frame,如果你已經建立了Frame網頁,我們可以提供關于更好的組織構架frame的一些建議。 
    三. 關于Frame的腳本 
    已經有相當多的關于Frame的控制腳本,可以幫助你建立多樣的,動態的Frame。 
    ----------------
    一. 建立Frame
    ----------------
    1.建立一個基本的Frame
    一個frame頁的HTML原代碼和普通的網頁代碼不完全相同。它也樣有<HTML>標簽和<HEAD>標簽,可以包含網頁標題和一些腳本或者meta標簽,但是因為Frame中顯示的是其他頁面,所以在內容上,使用<FRAMESET>替代<BODY>標簽。
    <FRAMESET>標簽中用來橫向,縱向劃分瀏覽器窗口的屬性是<rows>和<cols>,通過它們可以設置橫向或縱向分割的尺寸。設置方法有三種:1.使用精確的pix數值,2.使用相對百分比,3.使用*號。例如:
    cols="80,20%,*" 是指縱向分80 pixels, 瀏覽器窗口寬度的20%, 和剩余的部分三個窗口 
    rows="25%,75%" 是指將瀏覽器窗口分為上下兩個窗口,上面占25%,下面占75%
    rows="*,3*" 和上一句的意思一樣,分成上面1/4,下面3/4的兩個窗口
    在<FRAMESET>和</FRAMESET>標簽之間,你需要為每一個窗口設置<FRAME>標簽,標簽里設置該窗口的名稱和所顯示的頁面URL。注意:窗口名稱要不同,便于將來對該窗口進一步操作。例如:
    <HTML>
    <HEAD>
    <TITLE>簡單的frameset</TITLE>
    </HEAD>
    <FRAMESET cols="40%,60%" rows="2*,*">
    <FRAME name="TopLeft" src="red.htm">
    <FRAME name="TopRight" src="green.htm">
    <FRAME name="BotLeft" src="blue.htm">
    <FRAME name="BotRight" src="white.htm">
    </FRAMESET>
    </HTML> 
    在上面的例子中,<FRAMESET>中同時使用'rows'和'cols'屬性建立一個四方格樣子的框架,frame的設置默認的是從左面到右面,從上面到下面。
    要制作非格子狀的框架,你可以嵌套<FRAMESET>,在一個窗口中再劃分出子窗口,只要用<FRAMESET>代替<FRAME>標簽。同樣,也可以在子窗口里再設置它的rows,cols,建立子窗口的子窗口。例如:下面這段代碼顯示了三層<FRAMESET>嵌套的四個窗口:
    <FRAMESET rows="105,*">
    <FRAME name="adbanner" src="ad.html">
    <FRAMESET cols="40%,60%">
    <FRAME name="left" src="red.htm">
    <FRAMESET rows="*,*">
    <FRAME name="top" src="blue.htm">
    <FRAME name="bottom" src="white.htm">
    </FRAMESET>
    </FRAMESET>
    </FRAMESET> 
    2.建立frame之間的鏈接
    在一個含框架的靜態頁面中,點擊某個窗口中的鏈接來調用新的頁面,新頁面只會顯示在這個窗口中。但是,如果我希望點擊一個窗口中的鏈接,內容顯示在另外一個窗口內,應該怎樣做呢?就象常見的點擊左列菜單,右面主窗口中顯示變化內容。你可以這樣實現,在鏈接標簽<a>的中增加target屬性來指定要鏈接Frame的name。用target屬性可以指定當前瀏覽器窗口中任何存在的frame頁。如果該frame頁不存在,將會打開一個新窗口。
    例如:你現在有一個簡單的含左右兩個窗口的Frame頁面,文件名為home.html,原代碼為:
    <HTML>
    <HEAD><TITLE>My home page</TITLE></HEAD>
    <FRAMESET cols="115,*">
    <FRAME src="menu.htm">
    <FRAME name="content" src="main.htm">
    </FRAMESET>
    </HTML> 
    你需要點擊左列窗口menu.htm中的鏈接,變化內容顯示在右列名為content的窗口中,那么menu.htm的代碼可以這樣寫:
    <HTML><HEAD></HEAD>
    <BODY>
    <A href="main.htm" target="content">Main page</A><P>
    <A href="menu1.htm" target="content">menu1</A><P>
    <A href="menu2.htm" target="content">menu2</A><P>
    <A href="menu3.htm" target="_blank">menu3</A>
    </BODY></HTML> 
    其中target="content"就是指將鏈接的內容顯示在name為content的窗口中。最后的target="_blank"是target標簽的保留參數,意思是將鏈接打開在一個新窗口中。同樣的保留參數還有:
    "_parent"是指將鏈接內容顯示在父窗口中;
    "_top"是指將鏈接內容顯示在整個窗口中;
    "_self"是指將鏈接內容顯示在自己當前的frame窗口中。
    target屬性同樣可以用在map圖的<AREA>標簽中,一張圖的不同部分可以鏈接到不同的frame窗口中,例如:
    <AREA shape=circle coords="75,75,50"
    href="main.htm" target="content"
    alt="Main page"> 
    如果一個頁面內大部分或者所有的鏈接都指向同一個frame窗口,你可以用<BASE>標簽在此頁的<HEAD>區設置默認的鏈接frame窗口,例如:<BASE target="content">,如果有特殊的鏈接,則單獨設置。
    注意:<FRAME>標簽中必須設置src屬性,如果你希望初始頁是空白頁,必須在src中指定一個空白頁。
    3.美化你的Frame
    Frame的普通設置已經沒有問題了。瀏覽器開發商又為<FRAME>增加了許多屬性來幫助網頁設計師美化框架,以滿足不同的設計需求。
    默認的,Frame的不同窗口中間有凸起的邊框為界。現在你可以去掉這些邊框,使不同窗口完美的結合在一起,看上去象是一個單獨的完整頁面。在HTML 4.0中,在<FRAME>標簽中設置frameborder=0屬性,就可以消除邊框。Netscape3.0和IE3.0以上版本瀏覽器都支持這個屬性。你如果需要保留邊框,可以將frameborder設置為1。
    不同的瀏覽器還提供一些特有的frame屬性,用來設置彩色的邊框。因此為了確保frame的框架不被顯示出來,你還必須在<FRAMESET>標簽里增加兩個屬性:針對InternetExplorer瀏覽器設置framespacing=0,針對NC和Opera瀏覽器設置border=0。例如:
    <HTML>
    <HEAD><TITLE>My home page</TITLE></HEAD>
    <FRAMESET cols="115,*" framespacing=0 border=0>
    <FRAME src="menu.htm" frameborder=0
    noresize scrolling=no>
    <FRAME name="content" src="main.htm"
    frameborder=0>
    </FRAMESET>
    </HTML> 
    在我們上面的例子中,你會注意到有更多的屬性需要設置。例如你可以用鼠標拖動隨意改變frame窗口的大小。我們可以用'noresize'屬性來鎖定這一功能。同樣的可以用'scrolling=no'屬性來禁止滾動條的出現,如果需要滾動條可以設置為'scrolling=yes',默認設置是滾動條在內容超出窗口尺寸時自動出現。
    還有兩個<FRAME>屬性:'marginheight'和'marginwidth',設置確切的pixel數值可以設定頁面內容和邊框的距離。通常我們設置為0,如果不設置,它的屬性將采用瀏覽器的默認設置。
    4.浮動(float)Frame
    目前,浮動Frame只有IE3.0以上版本支持,然而,它們已經被收錄到HTML 4.0標準規范中。在NC5.0以上版本也開始支持這一效果。
    和一般Frame不同,浮動Frame類似一個物件直接包含在普通頁面里,看上去更象是一張圖片,一個java applet。設置浮動frame使用<IFRAME>標簽,<IFRAME>標簽有著<FRAME>標簽的大部分屬性,象:name,src,marginwidth,marginheight, frameborder, 和scrolling,但是它又有類似圖片的height,width和align屬性。(IE瀏覽器甚至支持非標準的hspace和vspace屬性。)
    浮動frame和標準frame有一樣的target屬性規則:如果你想鏈接到它的父窗口,同樣可以直接target父窗口的名稱,這個規則適用于浮動Frame在其他frame窗口中。例如:
    <IFRAME name="floater" src="start.htm"
    width=150 height=200 hspace=10 align=left>
    <p>你的瀏覽器不支持IFRAME</p>
    </IFRAME><BR>
    <A href="one.htm"
    target="floater">顯示one.htm</A><P>
    <A href="two.htm"
    target="floater">顯示two.htm</A><P>
    <A href="start.htm"
    target="floater">返回start.htm</A> 
    注意:<IFRAME>也是圍堵標簽,需要以</IFRAME>標志結束。如果瀏覽器不支持<IFRAME>,所有放在<IFRAME>和</IFRAME>之間的內容將被忽視,上面的例子中你只能看到<IFRAME>下面的連接和其中的文字。
    浮動frame同樣支持用百分比或者具體數值設置高和寬。
    ----------------
    二. 使用Frame
    ----------------
    1.當我們使用Frame
    使用Frame的目的是劃分窗口,通過這個方法,可以只改變頁面的部分內容或者使頁面的一部分可以卷動。設計師們常常使用Frame來設計工具(菜單)條,使菜單部分不變,內容部分隨菜單的點擊而變化。這樣可以減少下載文件的大小,因為頁面中相同的菜單部分可以不需要重新下載。
    使用Frame,大量的小頁面文件增加了站點管理的復雜性和層次。每個鏈接你都需要考慮是否連接到正確的頁面,正確的窗口。
    另一個frame應用問題是:大部分瀏覽器的bookmark只支持最初的框架(最外面的頁面),如果你進入frame中多層后,希望bookmark子窗口的頁面,你得到的只能是最初的Frame頁面。這個限制使讀者很難直接返回到一個特定的子頁面。然而,如果你的站點信息組織得很好,導航清晰,層次不深,Frame可以工作得很好。即使訪問者必須點擊多層,也可以得到高效簡捷的導航。
    使用frame不單單為了導航方便,它同樣可以用來建立動態的交互性頁面,當前大部分瀏覽器都支持這個功能。它可以和javascript配合建立復雜的多文件結構。
    2.設計一個含框架(Frame)的站點
    很多流行的網頁制作工具可以幫助你方便的建立Frame頁面,幫助你設置正確的鏈接target。但即使你是手工寫你的frame站點,建立和管理frame,導航都是很容易的。你甚至可以為不支持frame瀏覽器的用戶提供可以瀏覽的頁面內容。
    在常見的'菜單-內容'框架結構中,將導航菜單和內容放在不同的兩個frame窗口中,點擊菜單,內容顯示在另外窗口中。同時也可以設置多級菜單,點擊主菜單,在同一個frame窗口中顯示子菜單,點擊子菜單,內容顯示在另外的內容窗口中。在子菜單中點擊返回,可以回到上一級的主菜單。
    用這種方法也可以為不支持Frame的瀏覽器制作導航。因為Frame頁面不需要<BODY>標簽,支持frame的瀏覽器在讀到<BODY>標簽時會忽略跳過;而不支持frame的瀏覽器會忽視<FRAMESET>標簽去處理<BODY>的內容。根據這個特性,我們可以同時設置<FRAMESET>和<BODY>標簽內容,這樣可以使各種瀏覽器的用戶都可以看到正確的內容。例如:
    <HTML><HEAD>
    <TITLE>Welcome to my site!</TITLE>
    </HEAD>
    <FRAMESET cols="150,*">
    <FRAME name="menu" src="menu.htm">
    <FRAME name="content" src="intro.htm">
    </FRAMESET>
    <BODY>
    Welcome to my site.<P>
    <A href="intro.htm">Introduction</A>
    <A href="products.htm">Products</A>
    <A href="reviews.htm">Reviews</A>
    </BODY></HTML> 
    在HTML 4.0標準規范中提供一個<NOFARMES>標簽用來包住支持frame瀏覽器忽略的內容。例如<BODY>中的內容。但是Navigator 4.0和以下版本不支持<NOFRAMES>標簽,所以還是需要用上例的方法來設置frame頁面。 
    ----------------
    三. 關于Frame的腳本
    ----------------
    1.Frame導航的腳本
    當你熟練掌握了HTML,你很快就會想知道:如何點擊一個連接同時改變兩個Frame窗口的內容。這就需要特定的javascript腳本來實現。
    每個窗口物件都有一個frames數組特性,在一個普通的網頁中,這個數組是空的,長度為0;在含frame窗口的頁面中,另外設有一個frame的索引來排列各子窗口的順序(其中設置frameset的頁面是各子窗口頁面的父窗口)。所以,你可以在父窗口中用self.frames[2]定義第三個窗口(注意,索引數值是從0開始的);或者在其它子窗口中用parent.frames[2]來定義第三個窗口。
    在javascript中,每個窗口內的物件都可以調用這個窗口的特性,例如方法,事件,屬性,包括frames數組,所以改變一個子窗口中的內容就非常簡單了,只需要修改它的location.herf屬性。舉例說明:下面建立一個上下兩窗口的框架,其中下面的窗口又劃分為三個一樣的frame子窗口:
    <FRAMESET rows="60%,40%">
    <FRAME name="link" src="link.htm">
    <FRAMESET cols="*,*,*">
    <FRAME name="blank1" src="blank.htm">
    <FRAME name="blank2" src="blank.htm">
    <FRAME name="blank3" src="blank.htm">
    </FRAMESET>
    </FRAMESET> 
    要點擊上面窗口link.htm中的鏈接,同時改變下面窗口中三個子窗口內容,可以加入下面的功能代碼并將鏈接設置為href="java script:navAll()":
    <SCRIPT language="JavaScript"><!--
    function navAll() {
    parent.frames[1].location.href="red.htm";
    parent.frames[2].location.href="blue.htm";
    parent.frames[3].location.href="white.htm"; }
    // --></SCRIPT> 
    如果你的frame頁面中已經包含其他的jacascript腳本,它們也將照常工作。注意很重要的一點,你的<FRAME>標簽中必須設置src屬性,否則腳本無法正常工作。
    2.動態Frames腳本
    如果一個frame內容只有少量的信息,采用腳本來顯示內容的效率常常比獨立的HTML網頁高,因為普通HTMl頁面必須從服務器上重新調閱,而腳本可以直接在客戶端生成一些簡單的頁面。
    用這種方法你可以寫任何內容到任何窗口,甚至整個frame文檔。不同之處就是你可以寫不同的內容在同樣的窗口,而不需要使用任何DHTML。
    假設你想放自己部門員工的一組照片在一個Frame窗口中,鼠標點擊照片時,在照片下方的frame窗口中顯示他們的名稱,職務。那么你可以用下面的一段javascript腳本來代替建立獨立的網頁。首先建立一個數組,用來存放員工的名稱和職務:
    empID = new Array();
    empID[0] = 'Dana, CEO';
    empID[1] = 'Tom, senior editor';
    empID[2] = 'Percy, head designer';
    empID[3] = 'Mike, astrologer';
    然后在照片上建立map圖,使不同的鏈接區域<AREA>鏈接到showMe(n)功能,以顯示不同人的信息。就象下面代碼表示的,我們用javascript在frame窗口中寫入一個簡單的頁面:
    part1 = '<HTML><HEAD></HEAD>';
    part1+= '<BODY bgcolor=#ffffff><DIV align=center>';
    part2 = '</DIV></BODY></HTML>';
    function showMe(n) {
    parent.frames[1].document.open();
    parent.frames[1].document.write(part1);
    parent.frames[1].document.write(empID[n]);
    parent.frames[1].document.writeln(part2);
    parent.frames[1].close();
    用腳本生成新頁面并不一定需要類似上面的靜態數組,它們也可以隨機生成或者由客戶定制。
    3.Frame窗口間的腳本影響
    單獨使用javascript,窗口間的影響是有限的,你只能通過創建它的窗口頁面來檢測或訪問這個窗口。但是使用另外的方法:利用Frame的特性,窗口間的javasript功能和變量可以互相訪問和操作。例如,如果第三個frame子窗口的頁面代碼中有sayGobble(vol)功能函數,這個功能相對其它子窗口的調用格式為parent.frames[2].sayGobble(vol),同樣的,父窗口中的變量可以在子窗口中聲明為parent.myName='Imelda'。
    在一個靜態的frame框架中的功能函數和變量,可以讀取或寫入到其他的frame頁面。這個功能不但可以有效的利用通用的功能,更加可以維持數據到令一個框架窗口。
    下面的框架頁面只包含一個frame頁面--query.htm,并聲明了變量myword:
    <HTML><HEAD>
    <TITLE>Passing data</TITLE>
    <SCRIPT LANGUAGE="JavaScript"><!--
    myWord="";
    //--></SCRIPT>
    </HEAD>
    <FRAMESET rows="*,1" FRAMEBORDER=no>
    <FRAME name="active" src="query.htm">
    <FRAME name="dummy">
    </FRAMESET>
    </HTML> 
    頁面query.htm有一個文本輸入框和一個指向result.htm的鏈接。鏈接的鼠標點擊事件將把輸入的內容寫入到父窗口的myWord變量中,就向這樣:
    <HTML><HEAD></HEAD>
    <BODY>
    <FORM name="myForm">
    <INPUT type=text size=12 name="myText">
    <P>
    <AonClick="parent.myWord=myText.value"
    href="result.htm">點擊這里看你的輸入文字用黃色字體顯示在藍色背景上</A>
    </FORM>
    </BODY></HTML> 
    新的頁面--result.htm,刷新并寫入query.htm中的myWord變量內容:
    <HTML>
    <HEAD></HEAD>
    <BODY bgcolor=#0000cc vlink=#99ffff>
    <FONT size=+3 color=#ffff00>
    <SCRIPT language="JavaScript"><!--
    document.write(parent.myWord);
    //--></SCRIPT>
    </FONT><P>
    <A href="query.htm">重新再來一次</a>
    </BODY></HTML> 
    這個簡單的例子有著廣泛的應用,你可以引導訪問者按你設定的順序瀏覽網頁,你也可以根據客戶輸入的數據定制特別的頁面。
    在保存數據方面,這個方法并不能替代cookies或者CGI,因為當你一旦關閉或者刷新整個框架頁面,數據將會丟失。這種方法的好處是不需要服務器特別權限的支持,也不會給安全上帶來什么問題。
    4.浮動Frame的腳本
    支持浮動frame的瀏覽器同樣支持在IFRAME中使用類似普通frame的腳本。唯一不同的地方是:普通無框架頁面可以建立一個frames索引。浮動frame建立索引是根據HTML代碼中的<IFRAME>順序。類似普通frame,浮動frame中每一個元素都遵循窗口物件的特性。
    在IFRAME中保證腳本安全執行,你必須確認窗口中的frames.length不為0。例如,在下面的例子中,鏈接的target是浮動frame,內容顯示在<IFRAME>中,如果浮動frame不存在,則使用"_top"參數產生新窗口:
    <IFRAME name="floater" src="trog.htm"
    width=200 height=200></IFRAME>
    <A href="grot.html" target="floater"
    onClick="if (!self.frames.length)
    this.target='_top'">See grot.htm</A> 
    一個含有浮動frame的頁面就是這個frame的父窗口。所以多個浮動frame之間可以通過父窗口的parent.frames數組屬性來訪問。
    5. 預防腳本出錯
    雖然HTML的frame有標準的規范說明,但是DOM(Documentation Object Model 參見http://www.w3.org/TR/REC-DOM-Level-1/)的第一級只將它定義為一個HTML元素,而不是一個窗口元素。有關frame的javascript行為(behavior)沒有明確的定義,這個定義的缺乏將使得在讀取frame框架的時候,腳本會發生沖突。
    第一個矛盾就是頁面的onload和onunload事件是和<BODY>標簽相關聯的,而<FRAMESET>頁面卻忽略了<BODY>標簽。目前的做法是將這些事件放置在frame框架的最上面的窗口頁面中,也就是第一個調入的頁面。但有些3.0的瀏覽器不支持這樣的做法。
    在即時修改frame頁面內容的時候,許多瀏覽器同樣會發生腳本出錯。出錯的原因是:<FRAME>標簽中定義了頁面內容,而在后面的腳本中卻要求讀取或寫入其他的東西,兩者發生沖突。這些瀏覽器常常執行javascript腳本的命令,又繼續讀取最初設定的頁面代碼,從而產生javascript error信息。這些問題的解決方案是在你開始操作frame之前,確認所有frame頁面讀取完畢。這有一個好的辦法:就是使你的frame初始頁面盡量簡單,并在讀取完畢后報告。
    例如:假設您有一個框架頁面需要在讀取完畢后執行goToIt()功能,將下面的javascript腳本放入最初frameset頁面:
    countDown=frames.length;
    function soundOff() {
    countDown--;
    if (countDown==0) {
    goToIt();
    }
    然后在每個子窗口的頁面代碼<BODY>標簽里加入onLoad="parent.soundOff()",當所有frame頁面都被讀取并執行soundOff()功能后,countDown變量值為0,開始執行goTOIt()。

    posted on 2012-07-26 08:42 ** 閱讀(644) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    你好!

    常用鏈接

    留言簿(2)

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    收藏夾

    C#學習

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲成人网在线观看| 亚洲一级毛片免费观看| 亚洲人成网站在线观看播放青青 | 久久久久久久亚洲Av无码| 国产一级特黄高清免费大片| 18禁美女黄网站色大片免费观看 | 国产AV无码专区亚洲A∨毛片| 国产免费观看网站| 青春禁区视频在线观看直播免费| 国产精品免费无遮挡无码永久视频 | 亚洲国产综合第一精品小说| 久久亚洲国产午夜精品理论片 | 国产免费人成视频在线播放播 | 国产国产人免费视频成69大陆| 一个人看的www在线观看免费| 久久99精品免费视频| sss在线观看免费高清| 曰批免费视频播放免费| 鲁死你资源站亚洲av| 亚洲乱码中文字幕在线| 亚洲日本va在线观看| 亚洲人成电影青青在线播放| 日本久久久久亚洲中字幕| 亚洲国产精品一区二区久久| 亚洲不卡中文字幕无码| 亚洲热妇无码AV在线播放| 亚洲无人区一区二区三区| 亚洲综合另类小说色区| 久久久久亚洲AV无码专区桃色| 亚洲精品国产高清嫩草影院| 亚洲日韩人妻第一页| 久久精品国产亚洲精品| 国产亚洲精品不卡在线| 国产亚洲精品影视在线产品| 亚洲午夜久久久久久久久电影网| 国产亚洲av人片在线观看| 国产成人A人亚洲精品无码| 亚洲AV无码久久精品蜜桃| 97久久精品亚洲中文字幕无码| 78成人精品电影在线播放日韩精品电影一区亚洲 | 女人18特级一级毛片免费视频|