一:彈出框

JavaScript中有三種彈出框:警告(alert)、確認(confirm)以及提問(prompt)。 

1.警告(alert) 

在訪問網(wǎng)站的時候,你遇到的一聲,一個小窗口出現(xiàn)在你面前,上面寫著一段警示性的文字,或是其它的提示信息。如果你不點擊確定,你就不能對網(wǎng)頁做任何的操作。沒錯,這個的小窗口就是alert干的。 下面的代碼是一段使用alert的實例。 

<script type="text/JavaScript"> 

alert("我是菜鳥我怕誰"); 

</script> 

2.確認(confirm) 

確認框用于讓用戶選擇某一個問題是否符合實際情況。來看下面的代碼:我們用confirm("你是菜鳥嗎?")向訪客提問,變量r則保存了訪客的回應(yīng),它只可能有兩種取值:true或false。沒錯,它是一個布爾值。confirm后面的語句則是我們對訪客回答做出的不同回應(yīng)。 

var r=confirm("你是菜鳥嗎"); 

if (r==true) 

{ document.write("彼此彼此"); } 

else 

{ document.write("佩服佩服"); } </script> 


3.提問(prompt) 

prompt和confirm類似,不過它允許訪客隨意輸入回答。我們根據(jù)分數(shù)來做出不同的評價,現(xiàn)在我么就可以用prompt來向訪客提問,用score存儲用戶輸入的回答,其余的事情就都由后面的switch來完成了。 

function judge() { 

var score;//分數(shù) 

var degree;//分數(shù)等級 

score = prompt("你的分數(shù)是多少?") 

if (score > 100){ 

degree = '耍我?100分滿!'; } 

else{ 

switch (parseInt(score / 10)) { 

case 0: 

case 1: 

case 2: 

case 3: 

case 4: 

case 5: 

degree = "恭喜你,又掛了!"; 

break; 

case 6: 

degree = "勉強及格"; 

break; 

case 7: 

degree = "湊合,湊合" 

break; 

case 8: 

degree = "8錯,8錯"; 

break; 

case 9: 

case 10: 

degree = "高手高手,佩服佩服"; 

}//end of switch 

}//end of else 

alert(degree); 

} 


二:JavaScript事件 

我們之前提到過函數(shù)的調(diào)用。函數(shù)定義之后,默認是不會執(zhí)行的,這時候就需要一些事件來觸發(fā)這個函數(shù)的執(zhí)行。 JavaScript很多有很多事件,例如鼠標的點擊、移動,網(wǎng)頁的載入和關(guān)閉。我們一起來看幾個事件的實例。 

1.點擊事件 

使用點擊事件調(diào)用,需要給元素設(shè)置onclick屬性。示例代碼如下: 

<button value="點擊提交" onclick="displaymessage()">onclick調(diào)用函數(shù)</button> 

由于設(shè)置了onclick="displaymessage()",因此點擊按鈕則會調(diào)用函數(shù)。 

2.鼠標經(jīng)過、移出事件 

使用鼠標經(jīng)過事件調(diào)用函數(shù)的代碼如下: 

<button value="點擊提交" onmouseover="displaymessage()">鼠標滑過調(diào)用函數(shù)</button> 

當(dāng)鼠標經(jīng)過按鈕時,觸發(fā)onmouseover事件,將會調(diào)用函數(shù)displaymessage()。 

使用鼠標移出事件調(diào)用函數(shù)的代碼如下: 

<button value="點擊提交" onmouseout="displaymessage()">鼠標移出調(diào)用函數(shù)</button> 

把鼠標移動到這個按鈕里面,當(dāng)再移動出去時,觸發(fā)onmouseout 事件,將會調(diào)用函數(shù)displaymessage()。 

11.3更多事件 

JavaScript中還有很多事件,完整的列表可以看看http://www.w3pop.com/learn/view/p/3/o/0/doc/jsref_events/。 

下面的列表列舉了可以插入HTML標簽中來定義事件動作的屬性,具體的用法請參考上面的網(wǎng)站

屬性 

事件發(fā)生時機 

onabort 

圖片下載被打斷時 

onblur 

元素失去焦點時 

onchange 

框內(nèi)容改變時 

onclick 

鼠標點擊一個對象時 

ondblclick 

鼠標雙擊一個對象時 

onerror 

當(dāng)加載文檔或圖片時發(fā)生錯誤時 

onfocus 

當(dāng)元素獲取焦點時 

onkeydown 

按下鍵盤按鍵時 

onkeypress 

按下或按住鍵盤按鍵時 

onkeyup 

放開鍵盤按鍵時 

onload 

頁面或圖片加載完成時 

onmousedown 

鼠標被按下時 

onmousemove 

鼠標被移動時 

onmouseout 

鼠標離開元素時 

onmouseover 

鼠標經(jīng)過元素時 

onmouseup 

釋放鼠標按鍵時 

onreset 

重新點擊鼠標按鍵時 

onresize 

當(dāng)窗口或框架被重新定義尺寸時 

onselect 

文本被選擇時 

onsubmit 

點擊提交按鈕時 

onunload 

用戶離開頁面時 

三:JavaScript 對象化編程 

JavaScript 是使用對象化編程的,或者叫面向?qū)ο缶幊?/span>的。所謂對象化編程,意思是把 JavaScript 能涉及的范圍劃分成大大小小的對象,對象下面還繼續(xù)劃分對象直至非常詳細為止,所有的編程都以對象為出發(fā)點,基于對象。小到一個變量,大到網(wǎng)頁文檔、窗口甚至屏幕,都是對象。JavaScript對象是可以是一段文字、一幅圖片、一個表單(Form)等等。每個對象有它自己的屬性、方法和事件。對象的屬性是反映該對象某些特定的性質(zhì)的,例如:字符串的長度、圖像的長寬、文字框(Textbox)里的文字等等;對象的方法能對該對象做一些事情,例如,表單的提交(Submit),窗口的滾動(Scrolling)等等;而對象的事件就能響應(yīng)發(fā)生在對象上的事情,例如提交表單產(chǎn)生表單的提交事件,點擊連接產(chǎn)生的點擊事件。不是所有的對象都有以上三個性質(zhì),有些沒有事件,有些只有屬性。引用對象的任一性質(zhì)<對象名>.<性質(zhì)名>這種方法。 

JavaScript對象有:基本對象、全局對象、文檔對象。下面我們一一介紹。 

14.1基本對象 

1String 字符串對象 :前面博客中已經(jīng)提到過了,并且具體用法和方法和java中的基本相識,在此不在寫了

2Array 數(shù)組對象 

數(shù)組對象是一個對象的集合,里邊的對象可以是不同類型的。數(shù)組的每一個成員對象都有一個下標,用來表示它在數(shù)組中的位置,是從零開始的。 

屬性 

length 用法:<數(shù)組對象>.length;返回:數(shù)組的長度,即數(shù)組里有多少個元素。它等于數(shù)組里最后一個元素的下標加一。 

方法 

join() 用法:<數(shù)組對象>.join(<分隔符>);返回一個字符串,該字符串把數(shù)組中的各個元素串起來,用<分隔符>置于元素與元素之間。這個方法不影響數(shù)組原本的內(nèi)容。 

reverse() 用法:<數(shù)組對象>.reverse();使數(shù)組中的元素順序反過來。如果對數(shù)組[1, 2, 3]使用這個方法,它將使數(shù)組變成:[3, 2, 1]。 

slice() 用法:<數(shù)組對象>.slice(<始>[, <終>]);返回一個數(shù)組,該數(shù)組是原數(shù)組的子集,始于<始>,終于<終>。如果不給出<終>,則子集一直取到原數(shù)組的結(jié)尾。 

sort() 用法:<數(shù)組對象>.sort([<方法函數(shù)>]);使數(shù)組中的元素按照一定的順序排列。如果不指定<方法函數(shù)>,則按字母順序排列。在這種情況下,80 是比 9 排得前的。如果指定<方法函數(shù)>,則按<方法函數(shù)>所指定的排序方法排序。<方法函數(shù)>比較難講述,這里只將一些有用的<方法函數(shù)>介紹給大家。 

按升序排列數(shù)字: 

function sortMethod(a, b) { 

return a - b; 

myArray.sort(sortMethod); 

按降序排列數(shù)字:把上面的a - b該成b - a。 

3Math 數(shù)學(xué)對象 

Math對象,提供對數(shù)據(jù)的數(shù)學(xué)計算。下面所提到的屬性和方法,不再詳細說明用法,大家在使用的時候記住用Math.<名>這種格式。 

屬性 

E 返回常數(shù) e (2.718281828...)。 

LN2 返回 2 的自然對數(shù) (ln 2)。 

LN10 返回 10 的自然對數(shù) (ln 10)。 

LOG2E 返回以 2 為低的 e 的對數(shù) (log2e)。 

LOG10E 返回以 10 為低的 e 的對數(shù) (log10e)。 

PI 返回π(3.1415926535...)。 

SQRT1_2 返回 1/2 的平方根。 SQRT2 返回 2 的平方根。 

方法 

abs(x) 返回 x 的絕對值。 

acos(x) 返回 x 的反余弦值(余弦值等于 x 的角度),用弧度表示。 asin(x) 返回 x 的反正弦值。 

atan(x) 返回 x 的反正切值。 

atan2(x, y) 返回復(fù)平面內(nèi)點(x, y)對應(yīng)的復(fù)數(shù)的幅角,用弧度表示,其值在-π 到π之間。 

ceil(x) 返回大于等于 x 的最小整數(shù)。 

cos(x) 返回 x 的余弦。 

exp(x) 返回 e 的 x 次冪 (ex)。 

floor(x) 返回小于等于 x 的最大整數(shù)。 

log(x) 返回 x 的自然對數(shù) (ln x)。 

max(a, b) 返回 a, b 中較大的數(shù)。 

min(a, b) 返回 a, b 中較小的數(shù)。 

pow(n, m) 返回 n 的 m 次冪 (nm)。 

random() 返回大于 0 小于 1 的一個隨機數(shù)。 

round(x) 返回 x 四舍五入后的值。 

sin(x) 返回 x 的正弦。 

sqrt(x) 返回 x 的平方根。 

tan(x) 返回 x 的正切。 

4Date 對象 

Date 日期對象。這個對象可以儲存任意一個日期,從 0001 年到 9999 年,并且可以精確到毫秒數(shù)(1/1000 秒)。 

定義一個日期對象: 

var today = new Date(); 

這個方法使 成為日期對象,并且已有初始值:當(dāng)前時間。如果要自定初始值,可以用下列方法: 

var d = new Date(99, 10, 1); //99 年 10 月 1 日 var d = new Date('Oct 1, 1999'); //99 年 10 月 1 日 

最好的方法就是用下面介紹的方法來嚴格的定義時間。 

方法 

以下有很多getXXX()、setXXX()這樣的方法,getXXX()是獲得某個數(shù)值,而setXXX()是設(shè)定某個數(shù)值。 

如無說明,方法的使用格式為:<對象>.<方法>,下同。 

get/setFullYear() 返回/設(shè)置年份,用四位數(shù)表示。如果使用x.setFullYear(99),則年份被設(shè)定為 0099 年。 

get/setYear() 返回/設(shè)置年份,用兩位數(shù)表示。設(shè)定的時候瀏覽器自動加上19開頭,故使用x.setYear(00)把年份設(shè)定為 1900 年。 

get/setMonth() 返回/設(shè)置月份, 表示1月。 

get/setDate() 返回/設(shè)置日期。 

get/setDay() 返回/設(shè)置星期,0 表示星期天。 

get/setHours() 返回/設(shè)置小時數(shù),24小時制。

get/setMinutes() 返回/設(shè)置分鐘數(shù)。

get/setSeconds() 返回/設(shè)置秒鐘數(shù)。 

get/setMilliseconds() 返回/設(shè)置毫秒數(shù)。 

get/setTime() 返回/設(shè)置時間,該時間就是日期對象的內(nèi)部處理方法:從 1970 年 1 月 1 日零時正開始計算到日期對象所指的日期的毫秒數(shù)。如果要使某日期對象所指的時間推遲 1 小時,就用:x.setTime(x.getTime() + 60 * 60 * 1000);(一小時 60 分,一分 60 秒,一秒 1000 毫秒)。 

getTimezoneOffset() 返回日期對象采用的時區(qū)與格林威治時間所差的分鐘數(shù)。在格林威治東方的市區(qū),該值為負,例如:中國時區(qū)(GMT+0800)返回-480。 toString() 返回一個字符串,描述日期對象所指的日期。這個字符串的格式類似于:FriJul 21 15:43:46 UTC+0800 2000。 

toLocaleString() 返回一個字符串,描述日期對象所指的日期,用本地時間表示格式。如:2000-07-21 15:43:46。 

toGMTString() 返回一個字符串,描述日期對象所指的日期,用 GMT 格式。 

toUTCString() 返回一個字符串,描述日期對象所指的日期,用 UTC 格式。 

parse() 用法:Date.parse(<日期對象>);返回該日期對象的內(nèi)部表達方式。 

下面例子顯示當(dāng)前日期: 

<html> 

<body> 

<script language="JavaScript"> 

today = new Date(); 

var day; var date; 

if(today.getDay()==0) day = "星期日" 

if(today.getDay()==1) day = "星期一" 

if(today.getDay()==2) day = "星期二" 

if(today.getDay()==3) day = "星期三" 

if(today.getDay()==4) day = "星期四" 

if(today.getDay()==5) day = "星期五" 

if(today.getDay()==6) day = "星期六" 

date = "今天是" + (today.getYear()) + "年" + (today.getMonth() + 1 ) + "月 " + today.getDate() + " 日 " + day +""; 

document.write(date); 

</script> 

</body> 

</html> 


 2.文檔對象 

文檔對象是指在網(wǎng)頁文檔里劃分出來的對象。在 JavaScript 能夠涉及的范圍內(nèi)有如下幾個對象:window, document, location, navigator, screen, history 等。下面是一個文檔對象樹。 

要引用某個對象,就要把父級的對象都列出來。例如,要引用某表單MyForm的某文字框UserName,就要用document. MyForm. UserName。 

引用Form下的表單元素對象不使用名稱,比如Button,而是通過對象的ID 或 Name進行引用,或使用它所屬的對象數(shù)組。比如: 

<input id="UserName" type="text" /> 

var name = document.getElementById("UserName");//通過id獲取值 

1navigator 

navigator 瀏覽器對象 反映了當(dāng)前使用的瀏覽器的資料。 

屬性 

appCodeName 返回瀏覽器的碼名,流行的 IE 和 NN 都返回 'Mozilla'。 

appName 返回瀏覽器名。IE 返回 'Microsoft Internet Explorer',NN 返回 'Netscape'。

appVersion 返回瀏覽器版本,包括了大版本號、小版本號、語言、操作平臺等信息。 

platform 返回瀏覽器的操作平臺,對于 Windows 9x 上的瀏覽器,返回 'Win32'(大小寫可能有差異)。 

userAgent 返回以上全部信息。例如,IE5.01 返回 'Mozilla/4.0 (compatible; MSIE 5.01; Windows 98)'。 

javaEnabled() 返回一個布爾值,代表當(dāng)前瀏覽器允許不允許 Java。 

2screen 

screen 屏幕對象 反映了當(dāng)前用戶的屏幕設(shè)置。 

屬性 

width 返回屏幕的寬度(像素數(shù))。 height 返回屏幕的高度。 availWidth 返回屏幕的可用寬度(除去了一些不自動隱藏的類似任務(wù)欄的東西所占用的寬度)。

 availHeight 返回屏幕的可用高度。

 colorDepth 返回當(dāng)前顏色設(shè)置所用的位數(shù) - 1:黑白;8:256色;16:增強色;24/32:真彩色 

(3)window 

window 窗口對象是最大的對象,它描述的是一個瀏覽器窗口。一般要引用它的屬性和方法時,不需要用window.xxx這種形式,而直接使用xxx。一個框架頁面也是一個窗口。 

屬性 

name 窗口的名稱,由打開它的連接(<a target="...">)或框架頁(<frame name="...">)或某一個窗口調(diào)用的 open() 方法決定。一般我們不會用這個屬性。 

status 指窗口下方的狀態(tài)欄所顯示的內(nèi)容。通過對 status 賦值,可以改變狀態(tài)欄的顯示。 

opener 用法:window.opener;返回打開本窗口的窗口對象。

注意:返回的是一個窗口對象。如果窗口不是由其他窗口打開的,在 Netscape 中這個屬性返回 null;在 IE 中返回未定義(undefined)。

undefined 在一定程度上等于 null。

注意:undefined 不是 JavaScript 常數(shù),如果你企圖使用undefined,那就真的返回未定義了。 

self 指窗口本身,它返回的對象跟 window 對象是一模一樣的。最常用的是self.close(),放在<a>標記中:<a href="javascript:self.close()">關(guān)閉窗口</a>

 parent 返回窗口所屬的框架頁對象。 

top 返回占據(jù)整個瀏覽器窗口的最頂端的框架頁對象。

 history 歷史對象,見下。 

location 地址對象,見下。 

document 文檔對象,見下。 

方法 

open() 打開一個窗口。 

用法:open(<URL字符串>, <窗口名稱字符串>, <參數(shù)字符串>); <URL字符串>:描述所打開的窗口打開哪一個網(wǎng)頁。如果留空(''),則不打開任何網(wǎng)頁。 <窗口名稱字符串>:描述被打開的窗口的名稱(window.name),可以使用'_top'、'_blank'等內(nèi)建名稱。這里的名稱跟<a href="..." target="...">里的target屬性是一樣的。 <參數(shù)字符串>:描述被打開的窗口的樣式。如果只需要打開一個普通窗口,該字符串留空(''),如果要指定樣式,就在字符串里寫上一到多個參數(shù),參數(shù)之間用逗號隔開。 

例:打開一個 400 x 100 的干凈的窗口: open('','_blank','width=400,height=100,menubar=no,toolbar=no, location=no,directories=no,status=no,scrollbars=yes,resizable=yes') 

參數(shù) 

top=# 

窗口頂部離開屏幕頂部的像素數(shù) 

left=# 

窗口左端離開屏幕左端的像素數(shù) 

width=# 

窗口的寬度 

height=# 

窗口的高度 

menubar=... 

窗口有沒有菜單,取值yesno 

toolbar=... 

窗口有沒有工具條,取值yesno 

location=... 

窗口有沒有地址欄,取值yesno 

directories=... 

窗口有沒有連接區(qū),取值yesno 

scrollbars=... 

窗口有沒有滾動條,取值yesno 

status=... 

窗口有沒有狀態(tài)欄,取值yesno 

resizable=... 

窗口給不給調(diào)整大小,取值yesno 

fullscreen= 

窗口是否全屏,取值yesno 

open() 方法有返回值,返回的就是它打開的窗口對象。所以, 

var newWindow = open('','_blank'); 

這樣把一個新窗口賦值到newWindow變量中,以后通過newWindow變量就可以控制窗口了。 

close()關(guān)閉一個已打開的窗口。 

用法:window.close() 或 self.close():關(guān)閉本窗口; <窗口對象>.close():關(guān)閉指定的窗口。 如果該窗口有狀態(tài)欄,調(diào)用該方法后瀏覽器會警告:網(wǎng)頁正在試圖關(guān)閉窗口,是否關(guān)閉?然后等待用戶選擇是否;如果沒有狀態(tài)欄,調(diào)用該方法將直接關(guān)閉窗口。 

blur() 使焦點從窗口移走,窗口變?yōu)?/span>非活動窗口。 focus() 是窗口獲得焦點,變?yōu)?/span>活動窗口。 

scrollTo() 用法:[<窗口對象>.]scrollTo(x, y);使窗口滾動,使文檔從左上角數(shù)起的(x, y)點滾動到窗口的左上角。 

scrollBy() 用法:[<窗口對象>.]scrollBy(deltaX, deltaY);使窗口向右滾動 deltaX 像素,向下滾動 deltaY 像素。如果取負值,則向相反的方向滾動。 

resizeTo() 用法:[<窗口對象>.]resizeTo(width, height);使窗口調(diào)整大小到寬 width 像素,高 height 像素。 

resizeBy() 用法:[<窗口對象>.]resizeBy(deltaWidth, deltaHeight);使窗口調(diào)整大小,寬增大 deltaWidth 像素,高增大 deltaHeight 像素。如果取負值,則減少。 

alert() 用法:alert(<字符串>);彈出一個只包含確定按鈕的對話框,顯示<字符串>的內(nèi)容,整個文檔的讀取、Script 的運行都會暫停,直到用戶按下確定。 C

onfirm() 用法:confirm(<字符串>);彈出一個包含確定取消按鈕的對話框,顯示<字符串>的內(nèi)容,要求用戶做出選擇,整個文檔的讀取、Script 的運行都會暫停。如果用戶按下確定,則返回 true 值,如果按下取消,則返回 false 值。 

prompt() 用法:prompt(<字符串>[, <初始值>]);彈出一個包含確認”“取消和一個文本框的對話框,顯示<字符串>的內(nèi)容,要求用戶在文本框輸入一些數(shù)據(jù),整個文檔的讀取、Script 的運行都會暫停。如果用戶按下確認,則返回文本框里已有的內(nèi)容,如果用戶按下取消,則返回 null 值。如果指定<初始值>,則文本框里會有默認值。 

setTimeout()和setInterval()的使用 

這兩個方法都可以用來實現(xiàn)在一個固定時間段之后去執(zhí)行JavaScript。不過兩者各有各的應(yīng)用場景。 實際上,setTimeoutsetInterval的語法相同。它們都有兩個參數(shù),一個是將要執(zhí)行的代碼字符串,還有一個是以毫秒為單位的時間間隔,當(dāng)過了那個時間段之后就將執(zhí)行那段代碼。 不過這兩個函數(shù)還是有區(qū)別的,setInterval在執(zhí)行完一次代碼之后,經(jīng)過了那個固定的時間間隔,它還會自動重復(fù)執(zhí)行代碼,而setTimeout只執(zhí)行一次那段代碼。 雖然表面上看來setTimeout只能應(yīng)用在on-off方式的動作上,不過可以通過創(chuàng)建一個函數(shù)循環(huán)重復(fù)調(diào)用setTimeout,以實現(xiàn)重復(fù)的操作: 

showTime(); 

function showTime() 

var today = new Date(); 

alert("The time is: " + today.toString()); 

setTimeout("showTime()", 5000); 

一旦調(diào)用了這個函數(shù),那么就會每隔5秒鐘就顯示一次時間。如果使用setInterval,則相應(yīng)的代碼如下所示: 

setInterval("showTime()", 5000); 

function showTime() 

var today = new Date(); 

alert("The time is: " + today.toString()); 

這兩種方法可能看起來非常像,而且顯示的結(jié)果也會很相似,不過兩者的最大區(qū)別就是,setTimeout方法不會每隔5秒鐘就執(zhí)行一次showTime函數(shù),它是在每次調(diào)用setTimeout后過5秒鐘再去執(zhí)行showTime函數(shù)。這意味著如果showTime函數(shù)的主體部分需要2秒鐘執(zhí)行完,那么整個函數(shù)則要每7秒鐘才執(zhí)行一次。而setInterval卻沒有被自己所調(diào)用的函數(shù)所束縛,它只是簡單地每隔一定時間就重復(fù)執(zhí)行一次那個函數(shù)。 如果要求在每隔一個固定的時間間隔后就精確地執(zhí)行某動作,那么最好使用setInterval,而如果不想由于連續(xù)調(diào)用產(chǎn)生互相干擾的問題,尤其是每次函數(shù)的調(diào)用需要繁重的計算以及很長的處理時間,那么最好使用setTimeout。 用 setInterval 命令來創(chuàng)建的對象,可以用 clearInterval() 命令來終止。比如: 

var MyMar=setInterval(showTime(),speed); 

clearInterval(MyMar); 

4history 

history 歷史對象指瀏覽器的瀏覽歷史。 

屬性 

length 歷史的項數(shù)。JavaScript 所能管到的歷史被限制在用瀏覽器的前進”“后退鍵可以去到的范圍。本屬性返回的是前進后退兩個按鍵之下包含的地址數(shù)的和。 

方法 

back() 后退,跟按下后退鍵是等效的。 

forward() 前進,跟按下前進鍵是等效的。 

go() 用法:history.go(x);在歷史的范圍內(nèi)去到指定的一個地址。如果 x < 0,則后退 x 個地址,如果 x > 0,則前進 x 個地址,如果 x == 0,則刷新現(xiàn)在打開的網(wǎng)頁。history.go(0) 跟 location.reload() 是等效的。 

5location 

location 地址對象描述的是某一個窗口對象所打開的地址。要表示當(dāng)前窗口的地址,只需要使用location就行了;若要表示某一個窗口的地址,就使用<窗口對象>.location。 

注意 屬于不同協(xié)議或不同主機的兩個地址之間不能互相引用對方的 location 對象,這是出于安全性的需要。例如,當(dāng)前窗口打開的是www.a.com下面的某一頁,另外一個窗口(對象名為:bWindow)打開的是www.b.com的網(wǎng)頁。如果在當(dāng)前窗口使用bWindow.location,就會出錯:沒有權(quán)限。這個錯誤是不能用錯誤處理程序(Event Handler,參閱 onerror 事件)來接收處理的。 

屬性 

protocol 返回地址的協(xié)議,取值為 'http:','https:','file:' 等等。 hostname 返回地址的主機名,例如,一個http://www.microsoft.com/china/的地址,location.hostname == 'www.microsoft.com'。 port 返回地址的端口號,一般 http 的端口號是 '80'。 host 返回主機名和端口號,如:'www.a.com:8080'。 pathname 返回路徑名,如http://www.a.com/b/c.html,location.pathname == 'b/c.html'。 hash 返回#以及以后的內(nèi)容,如http://www.a.com/b/c.html#chapter4,location.hash == '#chapter4';如果地址里沒有#,則返回空字符串。 search 返回?以及以后的內(nèi)容,如http://www.a.com/b/c.asp?selection=3&jumpto=4,location.search == '?selection=3&jumpto=4';如果地址里沒有?,則返回空字符串。 href 返回以上全部內(nèi)容,也就是說,返回整個地址。在瀏覽器的地址欄上怎么顯示它就怎么返回。如果想一個窗口對象打開某地址,可以使用location.href = '...',也可以直接用location = '...'來達到此目的。 

方法 

reload() 相當(dāng)于按瀏覽器上的刷新(IE)或Reload(Netscape)鍵。 replace() 打開一個 URL,并取代歷史對象中當(dāng)前位置的地址。用這個方法打開一個 URL 后,按下瀏覽器的后退鍵將不能返回到剛才的頁面。 

6document 

document 文檔對象 描述當(dāng)前窗口或指定窗口對象的文檔。它包含了文檔從<head>到</body>的內(nèi)容。 用法:document (當(dāng)前窗口) 或 <窗口對象>.document (指定窗口) 

屬性 

lastModified 當(dāng)前文檔的最后修改日期,是一個 Date 對象。 referrer 如果當(dāng)前文檔是通過點擊連接打開的,則 referrer 返回原來的 URL。 

title 指<head>標記里用<title>...</title>定義的文字。在 Netscape 里本屬性不接受賦值。 

fgColor 指<body>標記的 text 屬性所表示的文本顏色。 

bgColor 指<body>標記的 bgcolor 屬性所表示的背景顏色。 linkColor 指<body>標記的 link 屬性所表示的連接顏色。 alinkColor 指<body>標記的 alink 屬性所表示的活動連接顏色。 vlinkColor 指<body>標記的 vlink 屬性所表示的已訪問連接顏色。 

方法 

open() 打開文檔以便 JavaScript 能向文檔的當(dāng)前位置(指插入 JavaScript 的位置)寫入數(shù)據(jù)。通常不需要用這個方法,在需要的時候 JavaScript 自動調(diào)用。 

write(); writeln() 向文檔寫入數(shù)據(jù),所寫入的會當(dāng)成標準文檔 HTML 來處理。writeln() 與 write() 的不同點在于,writeln() 在寫入數(shù)據(jù)以后會加一個換行。這個換行只是在 HTML 中換行,具體情況能不能夠是顯示出來的文字換行,要看插入 JavaScript 的位置而定。如在<pre>標記中插入,這個換行也會體現(xiàn)在文檔中。 

clear() 清空當(dāng)前文檔。 

close() 關(guān)閉文檔,停止寫入數(shù)據(jù)。如果用了 write[ln]() 或 clear() 方法,就一定要用 close() 方法來保證所做的更改能夠顯示出來。如果文檔還沒有完全讀取,也就是說,JavaScript 是插在文檔中的,那就不必使用該方法。 

現(xiàn)在我們已經(jīng)擁有足夠的知識來做以下這個很多網(wǎng)站都有的彈出式更新通知了。 

<script language="JavaScript"> <!-- var whatsNew = open('','_blank','top=50,left=50,width=200,height=300,' + 'menubar=no,toolbar=no,directories=no,location=no,' + 'status=no,resizable=no,scrollbars=yes'); whatsNew.document.write('<center><b>更新通知</b></center>'); whatsNew.document.write('<p>最后更新日期:00.08.01'); 

whatsNew.document.write('<p>00.08.01:增加了我的最愛欄目。'); whatsNew.document.write('<p align="right">' + '<a href="javascript:self.close()">關(guān)閉窗口</a>'); whatsNew.document.close(); --> </script> 

當(dāng)然也可以先寫好一個 HTML 文件,在 open() 方法中直接 load 這個文件。 

7anchors[]; links[]; Link 

anchors[]; links[]; Link 連接對象。 

用法:document.anchors[[x]]; document.links[[x]]; <anchorId>; <linkId> 

document.anchors 是一個數(shù)組,包含了文檔中所有錨標記(包含 name 屬性的<a>標記),按照在文檔中的次序,從 0 開始給每個錨標記定義了一個下標。 

document.links 也是一個數(shù)組,包含了文檔中所有連接標記(包含 href 屬性的<a>標記和<map>標記段里的<area>標記),按照在文檔中的次序,從 0 開始給每個連接標記定義了一個下標。 如果一個<a>標記既有 name 屬性,又有 href 屬性,則它既是一個 Anchor 對象,又是一個 Link 對象。 在 IE 中,如果在<a>標記中添加id="..."屬性,則這個<a>對象被賦予一個標識(ID),調(diào)用這個對象的時候只需要使用<id>就行了。很多文檔部件都可以用這個方法來賦予 ID,但要注意不能有兩個 ID 相同。 

anchors 和 links 作為數(shù)組,有數(shù)組的屬性和方法。單個 Anchor 對象沒有屬性;單個 Link 對象的屬性見下。 

屬性 

protocol; hostname; port; host; pathname; hash; search; href 與 location 對象相同。 target 返回/指定連接的目標窗口(字符串),與<a>標記里的 target 屬性是一樣的。 

作者:csh624366188 發(fā)表于2012-4-12 13:00:15 原文鏈接
閱讀:221 評論:2 查看評論