Hopes

          Start Here..

           

          VS2005里Frameset的使用方法

          VS2005里Frameset的使用方法
          一. 建立Frame 
          1.建立一個(gè)基本的Frame 
          2.建立frame之間的鏈接 
          3.美化你的Frame 
          4.浮動(dòng)(float)Frame 
          二. 使用Frame 
          1.當(dāng)我們使用Frame 
          2.設(shè)計(jì)一個(gè)含框架(Frame)的站點(diǎn) 
          三. 關(guān)于Frame的腳本 
          1.Frame導(dǎo)航的腳本 
          2.動(dòng)態(tài)Frames腳本 
          3.Frame窗口間的腳本影響 
          4.浮動(dòng)Frame的腳本 
          5.預(yù)防腳本出錯(cuò) 
          ----------------------------------------------------- 
          前言 
          Frame是HTML中用來設(shè)置框架的標(biāo)簽。框加可以在一個(gè)頁面里開設(shè)多個(gè)窗口,以滿足不同的設(shè)計(jì)需要,例如:將網(wǎng)站的菜單導(dǎo)航部分固定在一個(gè)窗口中,可以減少相同頁面下載時(shí)間。從Navigator 2.0允許使用Frame標(biāo)簽開始,現(xiàn)在大部分的瀏覽器都支持frame標(biāo)簽,并且已經(jīng)成為HTML 4.0的標(biāo)準(zhǔn)規(guī)范。我們的文章分三部分: 
          一. 建立Frame 
          學(xué)習(xí)Frame標(biāo)簽的最好辦法是直接建立Frame網(wǎng)頁。 
          二. 使用Frame 
          熟練掌握Frame,可以成為你設(shè)計(jì)制作的得力助手。使用不好,則會(huì)產(chǎn)生麻煩討厭的結(jié)果。我們將幫助你正確使用Frame,如果你已經(jīng)建立了Frame網(wǎng)頁,我們可以提供關(guān)于更好的組織構(gòu)架frame的一些建議。 
          三. 關(guān)于Frame的腳本 
          已經(jīng)有相當(dāng)多的關(guān)于Frame的控制腳本,可以幫助你建立多樣的,動(dòng)態(tài)的Frame。 
          ----------------
          一. 建立Frame
          ----------------
          1.建立一個(gè)基本的Frame
          一個(gè)frame頁的HTML原代碼和普通的網(wǎng)頁代碼不完全相同。它也樣有<HTML>標(biāo)簽和<HEAD>標(biāo)簽,可以包含網(wǎng)頁標(biāo)題和一些腳本或者meta標(biāo)簽,但是因?yàn)镕rame中顯示的是其他頁面,所以在內(nèi)容上,使用<FRAMESET>替代<BODY>標(biāo)簽。
          <FRAMESET>標(biāo)簽中用來橫向,縱向劃分瀏覽器窗口的屬性是<rows>和<cols>,通過它們可以設(shè)置橫向或縱向分割的尺寸。設(shè)置方法有三種:1.使用精確的pix數(shù)值,2.使用相對(duì)百分比,3.使用*號(hào)。例如:
          cols="80,20%,*" 是指縱向分80 pixels, 瀏覽器窗口寬度的20%, 和剩余的部分三個(gè)窗口 
          rows="25%,75%" 是指將瀏覽器窗口分為上下兩個(gè)窗口,上面占25%,下面占75%
          rows="*,3*" 和上一句的意思一樣,分成上面1/4,下面3/4的兩個(gè)窗口
          在<FRAMESET>和</FRAMESET>標(biāo)簽之間,你需要為每一個(gè)窗口設(shè)置<FRAME>標(biāo)簽,標(biāo)簽里設(shè)置該窗口的名稱和所顯示的頁面URL。注意:窗口名稱要不同,便于將來對(duì)該窗口進(jìn)一步操作。例如:
          <HTML>
          <HEAD>
          <TITLE>簡(jiǎn)單的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>中同時(shí)使用'rows'和'cols'屬性建立一個(gè)四方格樣子的框架,frame的設(shè)置默認(rèn)的是從左面到右面,從上面到下面。
          要制作非格子狀的框架,你可以嵌套<FRAMESET>,在一個(gè)窗口中再劃分出子窗口,只要用<FRAMESET>代替<FRAME>標(biāo)簽。同樣,也可以在子窗口里再設(shè)置它的rows,cols,建立子窗口的子窗口。例如:下面這段代碼顯示了三層<FRAMESET>嵌套的四個(gè)窗口:
          <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之間的鏈接
          在一個(gè)含框架的靜態(tài)頁面中,點(diǎn)擊某個(gè)窗口中的鏈接來調(diào)用新的頁面,新頁面只會(huì)顯示在這個(gè)窗口中。但是,如果我希望點(diǎn)擊一個(gè)窗口中的鏈接,內(nèi)容顯示在另外一個(gè)窗口內(nèi),應(yīng)該怎樣做呢?就象常見的點(diǎn)擊左列菜單,右面主窗口中顯示變化內(nèi)容。你可以這樣實(shí)現(xiàn),在鏈接標(biāo)簽<a>的中增加target屬性來指定要鏈接Frame的name。用target屬性可以指定當(dāng)前瀏覽器窗口中任何存在的frame頁。如果該frame頁不存在,將會(huì)打開一個(gè)新窗口。
          例如:你現(xiàn)在有一個(gè)簡(jiǎn)單的含左右兩個(gè)窗口的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> 
          你需要點(diǎn)擊左列窗口menu.htm中的鏈接,變化內(nèi)容顯示在右列名為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"就是指將鏈接的內(nèi)容顯示在name為content的窗口中。最后的target="_blank"是target標(biāo)簽的保留參數(shù),意思是將鏈接打開在一個(gè)新窗口中。同樣的保留參數(shù)還有:
          "_parent"是指將鏈接內(nèi)容顯示在父窗口中;
          "_top"是指將鏈接內(nèi)容顯示在整個(gè)窗口中;
          "_self"是指將鏈接內(nèi)容顯示在自己當(dāng)前的frame窗口中。
          target屬性同樣可以用在map圖的<AREA>標(biāo)簽中,一張圖的不同部分可以鏈接到不同的frame窗口中,例如:
          <AREA shape=circle coords="75,75,50"
          href="main.htm" target="content"
          alt="Main page"> 
          如果一個(gè)頁面內(nèi)大部分或者所有的鏈接都指向同一個(gè)frame窗口,你可以用<BASE>標(biāo)簽在此頁的<HEAD>區(qū)設(shè)置默認(rèn)的鏈接frame窗口,例如:<BASE target="content">,如果有特殊的鏈接,則單獨(dú)設(shè)置。
          注意:<FRAME>標(biāo)簽中必須設(shè)置src屬性,如果你希望初始頁是空白頁,必須在src中指定一個(gè)空白頁。
          3.美化你的Frame
          Frame的普通設(shè)置已經(jīng)沒有問題了。瀏覽器開發(fā)商又為<FRAME>增加了許多屬性來幫助網(wǎng)頁設(shè)計(jì)師美化框架,以滿足不同的設(shè)計(jì)需求。
          默認(rèn)的,F(xiàn)rame的不同窗口中間有凸起的邊框?yàn)榻纭,F(xiàn)在你可以去掉這些邊框,使不同窗口完美的結(jié)合在一起,看上去象是一個(gè)單獨(dú)的完整頁面。在HTML 4.0中,在<FRAME>標(biāo)簽中設(shè)置frameborder=0屬性,就可以消除邊框。Netscape3.0和IE3.0以上版本瀏覽器都支持這個(gè)屬性。你如果需要保留邊框,可以將frameborder設(shè)置為1。
          不同的瀏覽器還提供一些特有的frame屬性,用來設(shè)置彩色的邊框。因此為了確保frame的框架不被顯示出來,你還必須在<FRAMESET>標(biāo)簽里增加兩個(gè)屬性:針對(duì)InternetExplorer瀏覽器設(shè)置framespacing=0,針對(duì)NC和Opera瀏覽器設(shè)置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> 
          在我們上面的例子中,你會(huì)注意到有更多的屬性需要設(shè)置。例如你可以用鼠標(biāo)拖動(dòng)隨意改變frame窗口的大小。我們可以用'noresize'屬性來鎖定這一功能。同樣的可以用'scrolling=no'屬性來禁止?jié)L動(dòng)條的出現(xiàn),如果需要滾動(dòng)條可以設(shè)置為'scrolling=yes',默認(rèn)設(shè)置是滾動(dòng)條在內(nèi)容超出窗口尺寸時(shí)自動(dòng)出現(xiàn)。
          還有兩個(gè)<FRAME>屬性:'marginheight'和'marginwidth',設(shè)置確切的pixel數(shù)值可以設(shè)定頁面內(nèi)容和邊框的距離。通常我們?cè)O(shè)置為0,如果不設(shè)置,它的屬性將采用瀏覽器的默認(rèn)設(shè)置。
          4.浮動(dòng)(float)Frame
          目前,浮動(dòng)Frame只有IE3.0以上版本支持,然而,它們已經(jīng)被收錄到HTML 4.0標(biāo)準(zhǔn)規(guī)范中。在NC5.0以上版本也開始支持這一效果。
          和一般Frame不同,浮動(dòng)Frame類似一個(gè)物件直接包含在普通頁面里,看上去更象是一張圖片,一個(gè)java applet。設(shè)置浮動(dòng)frame使用<IFRAME>標(biāo)簽,<IFRAME>標(biāo)簽有著<FRAME>標(biāo)簽的大部分屬性,象:name,src,marginwidth,marginheight, frameborder, 和scrolling,但是它又有類似圖片的height,width和align屬性。(IE瀏覽器甚至支持非標(biāo)準(zhǔn)的hspace和vspace屬性。)
          浮動(dòng)frame和標(biāo)準(zhǔn)frame有一樣的target屬性規(guī)則:如果你想鏈接到它的父窗口,同樣可以直接target父窗口的名稱,這個(gè)規(guī)則適用于浮動(dòng)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>也是圍堵標(biāo)簽,需要以</IFRAME>標(biāo)志結(jié)束。如果瀏覽器不支持<IFRAME>,所有放在<IFRAME>和</IFRAME>之間的內(nèi)容將被忽視,上面的例子中你只能看到<IFRAME>下面的連接和其中的文字。
          浮動(dòng)frame同樣支持用百分比或者具體數(shù)值設(shè)置高和寬。
          ----------------
          二. 使用Frame
          ----------------
          1.當(dāng)我們使用Frame
          使用Frame的目的是劃分窗口,通過這個(gè)方法,可以只改變頁面的部分內(nèi)容或者使頁面的一部分可以卷動(dòng)。設(shè)計(jì)師們常常使用Frame來設(shè)計(jì)工具(菜單)條,使菜單部分不變,內(nèi)容部分隨菜單的點(diǎn)擊而變化。這樣可以減少下載文件的大小,因?yàn)轫撁嬷邢嗤牟藛尾糠挚梢圆恍枰匦孪螺d。
          使用Frame,大量的小頁面文件增加了站點(diǎn)管理的復(fù)雜性和層次。每個(gè)鏈接你都需要考慮是否連接到正確的頁面,正確的窗口。
          另一個(gè)frame應(yīng)用問題是:大部分瀏覽器的bookmark只支持最初的框架(最外面的頁面),如果你進(jìn)入frame中多層后,希望bookmark子窗口的頁面,你得到的只能是最初的Frame頁面。這個(gè)限制使讀者很難直接返回到一個(gè)特定的子頁面。然而,如果你的站點(diǎn)信息組織得很好,導(dǎo)航清晰,層次不深,F(xiàn)rame可以工作得很好。即使訪問者必須點(diǎn)擊多層,也可以得到高效簡(jiǎn)捷的導(dǎo)航。
          使用frame不單單為了導(dǎo)航方便,它同樣可以用來建立動(dòng)態(tài)的交互性頁面,當(dāng)前大部分瀏覽器都支持這個(gè)功能。它可以和javascript配合建立復(fù)雜的多文件結(jié)構(gòu)。
          2.設(shè)計(jì)一個(gè)含框架(Frame)的站點(diǎn)
          很多流行的網(wǎng)頁制作工具可以幫助你方便的建立Frame頁面,幫助你設(shè)置正確的鏈接target。但即使你是手工寫你的frame站點(diǎn),建立和管理frame,導(dǎo)航都是很容易的。你甚至可以為不支持frame瀏覽器的用戶提供可以瀏覽的頁面內(nèi)容。
          在常見的'菜單-內(nèi)容'框架結(jié)構(gòu)中,將導(dǎo)航菜單和內(nèi)容放在不同的兩個(gè)frame窗口中,點(diǎn)擊菜單,內(nèi)容顯示在另外窗口中。同時(shí)也可以設(shè)置多級(jí)菜單,點(diǎn)擊主菜單,在同一個(gè)frame窗口中顯示子菜單,點(diǎn)擊子菜單,內(nèi)容顯示在另外的內(nèi)容窗口中。在子菜單中點(diǎn)擊返回,可以回到上一級(jí)的主菜單。
          用這種方法也可以為不支持Frame的瀏覽器制作導(dǎo)航。因?yàn)镕rame頁面不需要<BODY>標(biāo)簽,支持frame的瀏覽器在讀到<BODY>標(biāo)簽時(shí)會(huì)忽略跳過;而不支持frame的瀏覽器會(huì)忽視<FRAMESET>標(biāo)簽去處理<BODY>的內(nèi)容。根據(jù)這個(gè)特性,我們可以同時(shí)設(shè)置<FRAMESET>和<BODY>標(biāo)簽內(nèi)容,這樣可以使各種瀏覽器的用戶都可以看到正確的內(nèi)容。例如:
          <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標(biāo)準(zhǔn)規(guī)范中提供一個(gè)<NOFARMES>標(biāo)簽用來包住支持frame瀏覽器忽略的內(nèi)容。例如<BODY>中的內(nèi)容。但是Navigator 4.0和以下版本不支持<NOFRAMES>標(biāo)簽,所以還是需要用上例的方法來設(shè)置frame頁面。 
          ----------------
          三. 關(guān)于Frame的腳本
          ----------------
          1.Frame導(dǎo)航的腳本
          當(dāng)你熟練掌握了HTML,你很快就會(huì)想知道:如何點(diǎn)擊一個(gè)連接同時(shí)改變兩個(gè)Frame窗口的內(nèi)容。這就需要特定的javascript腳本來實(shí)現(xiàn)。
          每個(gè)窗口物件都有一個(gè)frames數(shù)組特性,在一個(gè)普通的網(wǎng)頁中,這個(gè)數(shù)組是空的,長度為0;在含frame窗口的頁面中,另外設(shè)有一個(gè)frame的索引來排列各子窗口的順序(其中設(shè)置frameset的頁面是各子窗口頁面的父窗口)。所以,你可以在父窗口中用self.frames[2]定義第三個(gè)窗口(注意,索引數(shù)值是從0開始的);或者在其它子窗口中用parent.frames[2]來定義第三個(gè)窗口。
          在javascript中,每個(gè)窗口內(nèi)的物件都可以調(diào)用這個(gè)窗口的特性,例如方法,事件,屬性,包括frames數(shù)組,所以改變一個(gè)子窗口中的內(nèi)容就非常簡(jiǎn)單了,只需要修改它的location.herf屬性。舉例說明:下面建立一個(gè)上下兩窗口的框架,其中下面的窗口又劃分為三個(gè)一樣的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> 
          要點(diǎn)擊上面窗口link.htm中的鏈接,同時(shí)改變下面窗口中三個(gè)子窗口內(nèi)容,可以加入下面的功能代碼并將鏈接設(shè)置為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頁面中已經(jīng)包含其他的jacascript腳本,它們也將照常工作。注意很重要的一點(diǎn),你的<FRAME>標(biāo)簽中必須設(shè)置src屬性,否則腳本無法正常工作。
          2.動(dòng)態(tài)Frames腳本
          如果一個(gè)frame內(nèi)容只有少量的信息,采用腳本來顯示內(nèi)容的效率常常比獨(dú)立的HTML網(wǎng)頁高,因?yàn)槠胀℉TMl頁面必須從服務(wù)器上重新調(diào)閱,而腳本可以直接在客戶端生成一些簡(jiǎn)單的頁面。
          用這種方法你可以寫任何內(nèi)容到任何窗口,甚至整個(gè)frame文檔。不同之處就是你可以寫不同的內(nèi)容在同樣的窗口,而不需要使用任何DHTML。
          假設(shè)你想放自己部門員工的一組照片在一個(gè)Frame窗口中,鼠標(biāo)點(diǎn)擊照片時(shí),在照片下方的frame窗口中顯示他們的名稱,職務(wù)。那么你可以用下面的一段javascript腳本來代替建立獨(dú)立的網(wǎng)頁。首先建立一個(gè)數(shù)組,用來存放員工的名稱和職務(wù):
          empID = new Array();
          empID[0] = 'Dana, CEO';
          empID[1] = 'Tom, senior editor';
          empID[2] = 'Percy, head designer';
          empID[3] = 'Mike, astrologer';
          然后在照片上建立map圖,使不同的鏈接區(qū)域<AREA>鏈接到showMe(n)功能,以顯示不同人的信息。就象下面代碼表示的,我們用javascript在frame窗口中寫入一個(gè)簡(jiǎn)單的頁面:
          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();
          用腳本生成新頁面并不一定需要類似上面的靜態(tài)數(shù)組,它們也可以隨機(jī)生成或者由客戶定制。
          3.Frame窗口間的腳本影響
          單獨(dú)使用javascript,窗口間的影響是有限的,你只能通過創(chuàng)建它的窗口頁面來檢測(cè)或訪問這個(gè)窗口。但是使用另外的方法:利用Frame的特性,窗口間的javasript功能和變量可以互相訪問和操作。例如,如果第三個(gè)frame子窗口的頁面代碼中有sayGobble(vol)功能函數(shù),這個(gè)功能相對(duì)其它子窗口的調(diào)用格式為parent.frames[2].sayGobble(vol),同樣的,父窗口中的變量可以在子窗口中聲明為parent.myName='Imelda'。
          在一個(gè)靜態(tài)的frame框架中的功能函數(shù)和變量,可以讀取或?qū)懭氲狡渌膄rame頁面。這個(gè)功能不但可以有效的利用通用的功能,更加可以維持?jǐn)?shù)據(jù)到令一個(gè)框架窗口。
          下面的框架頁面只包含一個(gè)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有一個(gè)文本輸入框和一個(gè)指向result.htm的鏈接。鏈接的鼠標(biāo)點(diǎn)擊事件將把輸入的內(nèi)容寫入到父窗口的myWord變量中,就向這樣:
          <HTML><HEAD></HEAD>
          <BODY>
          <FORM name="myForm">
          <INPUT type=text size=12 name="myText">
          <P>
          <AonClick="parent.myWord=myText.value"
          href="result.htm">點(diǎn)擊這里看你的輸入文字用黃色字體顯示在藍(lán)色背景上</A>
          </FORM>
          </BODY></HTML> 
          新的頁面--result.htm,刷新并寫入query.htm中的myWord變量?jī)?nèi)容:
          <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> 
          這個(gè)簡(jiǎn)單的例子有著廣泛的應(yīng)用,你可以引導(dǎo)訪問者按你設(shè)定的順序?yàn)g覽網(wǎng)頁,你也可以根據(jù)客戶輸入的數(shù)據(jù)定制特別的頁面。
          在保存數(shù)據(jù)方面,這個(gè)方法并不能替代cookies或者CGI,因?yàn)楫?dāng)你一旦關(guān)閉或者刷新整個(gè)框架頁面,數(shù)據(jù)將會(huì)丟失。這種方法的好處是不需要服務(wù)器特別權(quán)限的支持,也不會(huì)給安全上帶來什么問題。
          4.浮動(dòng)Frame的腳本
          支持浮動(dòng)frame的瀏覽器同樣支持在IFRAME中使用類似普通frame的腳本。唯一不同的地方是:普通無框架頁面可以建立一個(gè)frames索引。浮動(dòng)frame建立索引是根據(jù)HTML代碼中的<IFRAME>順序。類似普通frame,浮動(dòng)frame中每一個(gè)元素都遵循窗口物件的特性。
          在IFRAME中保證腳本安全執(zhí)行,你必須確認(rèn)窗口中的frames.length不為0。例如,在下面的例子中,鏈接的target是浮動(dòng)frame,內(nèi)容顯示在<IFRAME>中,如果浮動(dòng)frame不存在,則使用"_top"參數(shù)產(chǎn)生新窗口:
          <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> 
          一個(gè)含有浮動(dòng)frame的頁面就是這個(gè)frame的父窗口。所以多個(gè)浮動(dòng)frame之間可以通過父窗口的parent.frames數(shù)組屬性來訪問。
          5. 預(yù)防腳本出錯(cuò)
          雖然HTML的frame有標(biāo)準(zhǔn)的規(guī)范說明,但是DOM(Documentation Object Model 參見http://www.w3.org/TR/REC-DOM-Level-1/)的第一級(jí)只將它定義為一個(gè)HTML元素,而不是一個(gè)窗口元素。有關(guān)frame的javascript行為(behavior)沒有明確的定義,這個(gè)定義的缺乏將使得在讀取frame框架的時(shí)候,腳本會(huì)發(fā)生沖突。
          第一個(gè)矛盾就是頁面的onload和onunload事件是和<BODY>標(biāo)簽相關(guān)聯(lián)的,而<FRAMESET>頁面卻忽略了<BODY>標(biāo)簽。目前的做法是將這些事件放置在frame框架的最上面的窗口頁面中,也就是第一個(gè)調(diào)入的頁面。但有些3.0的瀏覽器不支持這樣的做法。
          在即時(shí)修改frame頁面內(nèi)容的時(shí)候,許多瀏覽器同樣會(huì)發(fā)生腳本出錯(cuò)。出錯(cuò)的原因是:<FRAME>標(biāo)簽中定義了頁面內(nèi)容,而在后面的腳本中卻要求讀取或?qū)懭肫渌臇|西,兩者發(fā)生沖突。這些瀏覽器常常執(zhí)行javascript腳本的命令,又繼續(xù)讀取最初設(shè)定的頁面代碼,從而產(chǎn)生javascript error信息。這些問題的解決方案是在你開始操作frame之前,確認(rèn)所有frame頁面讀取完畢。這有一個(gè)好的辦法:就是使你的frame初始頁面盡量簡(jiǎn)單,并在讀取完畢后報(bào)告。
          例如:假設(shè)您有一個(gè)框架頁面需要在讀取完畢后執(zhí)行g(shù)oToIt()功能,將下面的javascript腳本放入最初frameset頁面:
          countDown=frames.length;
          function soundOff() {
          countDown--;
          if (countDown==0) {
          goToIt();
          }
          然后在每個(gè)子窗口的頁面代碼<BODY>標(biāo)簽里加入onLoad="parent.soundOff()",當(dāng)所有frame頁面都被讀取并執(zhí)行soundOff()功能后,countDown變量值為0,開始執(zhí)行g(shù)oTOIt()。

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


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          你好!

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          相冊(cè)

          收藏夾

          C#學(xué)習(xí)

          友情鏈接

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 冕宁县| 永泰县| 海盐县| 石狮市| 南乐县| 千阳县| 青州市| 仁布县| 虎林市| 菏泽市| 黄平县| 那曲县| 泸定县| 永胜县| 石渠县| 夹江县| 冷水江市| 商水县| 连江县| 丰原市| 湄潭县| 崇信县| 延川县| 利辛县| 加查县| 黎川县| 都兰县| 铜鼓县| 黔西县| 山阴县| 湖口县| 垣曲县| 宜阳县| 定边县| 凤阳县| 吉安市| 漯河市| 常德市| 永善县| 施秉县| 雷州市|