JavaScript框架編程
更新時(shí)間:2008年01月16日 20:46:09 作者:
JavaScript框架編程
改變框架的載入頁面
對(duì)框架的引用就是對(duì)window對(duì)象的引用,利用window對(duì)象的location屬性,可以改變框架的導(dǎo)航,例如:
window.frames[0].location="1.html";
這就將頁面中第一個(gè)框架的頁面重定向到1.html,利用這個(gè)性質(zhì),甚至可以使用一條鏈接來更新多個(gè)框架。
<frameset rows="50%,50%">
<frame src="1.html" />
<frame src="2.html" />
</frameset>
<!--somecode-->
<a href="frame1.location='3.html;frame2.location='4.html'" >link</a>
<!--somecode-->
引用其他框架內(nèi)的JavaScript變量和函數(shù)
在介紹引用其他框架內(nèi)JavaScript變量和函數(shù)的技術(shù)之前,先來看以下代碼:
<script language="JavaScript" type="text/javascript">
<!--
function hello(){
alert("hello,ajax!");
}
window.hello();
//-->
</script>
如果運(yùn)行了這段代碼,會(huì)彈出“hello,ajax!”的窗口,這正是執(zhí)行hello()函數(shù)的結(jié)果。那為什么hello()變成了window對(duì)象的方法呢?因?yàn)樵谝粋€(gè)頁面內(nèi)定義的所有全局變量和全局函數(shù)都是作為window對(duì)象的成員。例如:
var a=1;
alert(window.a);
就會(huì)彈出對(duì)話框顯示為1。同樣的原理,在不同框架之間共享變量和函數(shù),就是要通過window對(duì)象來調(diào)用。
例如:一個(gè)商品瀏覽頁面由兩個(gè)子框架組成,左側(cè)表示商品分類的鏈接;當(dāng)用戶單擊分類鏈接時(shí),右側(cè)顯示相應(yīng)的商品列表;用戶可以單擊商品旁的【購買】鏈接將商品加入購物車。
在這個(gè)例子中,可以利用左側(cè)導(dǎo)航頁面來存儲(chǔ)用戶希望購買的商品,因?yàn)楫?dāng)用戶單擊導(dǎo)航鏈接時(shí),變化的是另外一個(gè)頁面,即商品展示頁面,而導(dǎo)航頁面本身是不變的,因此其中的JavaScript變量不會(huì)丟失,可以用來存儲(chǔ)全局?jǐn)?shù)據(jù)。其實(shí)現(xiàn)原理如下:
假設(shè)左側(cè)頁面為link.html,右側(cè)頁面為show.html,頁面結(jié)構(gòu)如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
</head>
<frameset cols="20%,80%">
<frame src="link.html" />
<frame src="show.html" />
</frameset>
</html>
在show.html中展示的商品旁邊可以加入這樣一條語句:
<a href="void(0)" >加入購物車</a>
其中l(wèi)ink表示導(dǎo)航框架,在link.html頁面中定義了arrOrders數(shù)組來存儲(chǔ)商品的id,函數(shù)addToOrders()用來響應(yīng)商品旁邊【購買】鏈接的單擊事件,它接收的參數(shù)id表示商品的id,例子中是一個(gè)id為32068的商品:
<script language="JavaScript" type="text/javascript">
<!--
var arrOrders=new Array();
function addToOrders(id){
arrOrders.push(id);
}
//-->
</script>
這樣,在結(jié)帳頁面或是購物車瀏覽頁面就可以用arrOrders來獲取所有準(zhǔn)備購買的商品。
框架可以使一個(gè)頁面劃分為功能獨(dú)立的多個(gè)模塊,每個(gè)模塊之間彼此獨(dú)立,但又可以通過window對(duì)象的引用來建立聯(lián)系,是Web開發(fā)中的一個(gè)重要機(jī)制。在Ajax開發(fā)中,還可以利用隱藏框架實(shí)現(xiàn)各種技巧,在后面介紹Ajax實(shí)例編程時(shí)可以發(fā)現(xiàn),無刷新上傳文件以及解決Ajax的前進(jìn)后退問題都會(huì)用到這種技術(shù)。
相關(guān)文章
javascript創(chuàng)建對(duì)象的幾種模式介紹
下面小編就為大家?guī)硪黄猨avascript創(chuàng)建對(duì)象的幾種模式介紹。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考2016-05-05
JavaScript高級(jí)程序設(shè)計(jì)(第3版)學(xué)習(xí)筆記13 ECMAScript5新特性
通常而言,JavaScript由ECMAScript核心、BOM和DOM三部分構(gòu)成,前面的文章將ECMAScript核心部分粗略的過了一篇2012-10-10
深入理解JavaScript系列(37):設(shè)計(jì)模式之享元模式詳解
這篇文章主要介紹了深入理解JavaScript系列(37):設(shè)計(jì)模式之享元模式詳解,享元模式(Flyweight),運(yùn)行共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象,避免大量擁有相同內(nèi)容的小類的開銷(如耗費(fèi)內(nèi)存),使大家共享一個(gè)類(元類),需要的朋友可以參考下2015-03-03
JavaScript獲取tr td 的三種方式全面總結(jié)(推薦)
這篇文章主要介紹了JavaScript獲取tr td 的三種方式,具體操作步驟大家可查看下文詳細(xì)講解,感興趣的小伙伴們可以參考一下。2017-08-08
JavaScript中的this,call,apply使用及區(qū)別詳解
本文結(jié)合基本javascript的權(quán)威書籍中的內(nèi)容,根據(jù)自己的理解,通過相關(guān)示例向大家展示了javascript中this,call,apply使用及區(qū)別,非常的細(xì)致全面,希望大家能夠喜歡。2016-01-01

