《HTML教程》-8.2-8.3教學(xué)材料_第1頁
《HTML教程》-8.2-8.3教學(xué)材料_第2頁
《HTML教程》-8.2-8.3教學(xué)材料_第3頁
《HTML教程》-8.2-8.3教學(xué)材料_第4頁
《HTML教程》-8.2-8.3教學(xué)材料_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

◆location.pathname——返回當(dāng)前網(wǎng)頁的路徑和文件名。◆tocol——返回網(wǎng)絡(luò)應(yīng)用的協(xié)議名稱(http://或https://)?!鬺ocation.assign——載入一個新的網(wǎng)頁。這些用法比較簡單,下面舉個例子。在這個例子中用到的網(wǎng)頁結(jié)構(gòu)如下:<divid="con">網(wǎng)頁信息</div><buttonid="redirect">百度</button>在頁面加載時讀取網(wǎng)頁相關(guān)的信息:URL地址、主機名稱、路徑名和使用的協(xié)議,并顯示在ID為con的div中。如果按“百度”按鈕,則當(dāng)前網(wǎng)頁重定向到百度頁面()。讀取網(wǎng)頁相關(guān)信息的代碼如下:functionlistInfo(){ varinfo="URL="+location.href +"<br/>主機名="+location.hostname +"<br/>路徑="+location.pathname +"<br/>協(xié)議="+tocol; document.getElementById("con").innerHTML=info;}這段代碼主要是通過location對象的href讀取網(wǎng)頁的URL,hostname屬性讀取主機名,pathname屬性讀取網(wǎng)頁的路徑和文件名稱,通過protocol屬性讀取使用的協(xié)議名,然后組成一個字符串。并通過document.getElementById()方法查找網(wǎng)頁中ID為con的div元素,再使用div元素的innerHTML屬性將組合好的信息顯示在div元素中。點擊“百度”按鈕要跳轉(zhuǎn)到百度網(wǎng)頁,需要給“百度”按鈕注冊單擊事件處理程序,在處理程序中調(diào)用location對象的assign()方法,將百度地址傳遞給它就可以了。所需要代碼如下:ocument.getElementById("redirect").onclick=function(){location.assign("");};通過document.getElementById("redirect")獲取ID為redirect的按鈕,通過匿名函數(shù)處理按鈕的單擊事件。完整的代碼如清單8-6所示,對應(yīng)的源代碼見隨書源碼的Listing8-6.html。8.3history對象

history對象保存了訪問過的URL的歷史信息,還可以通過它在這些歷史之間前后移動,即到達已經(jīng)訪問過的頁面。history對象作為window對象的一部分,或者說window對象的history屬性指向History對象。history對象的常用屬性和方法:

◆length屬性——history對象中歷史URL的條數(shù)?!魋tate屬性——當(dāng)前URL對應(yīng)的狀態(tài)信息。若當(dāng)前URL地址不是通過pushState或者replaceState產(chǎn)生的,則state為null?!鬮ack()方法——返回history列表中的前一個URL(即后退)。◆forward()方法——前進到history列表中的下一個URL(即前進)?!鬵o()方法——加載history列表中的某個具體頁面。其參數(shù)可以是數(shù)字,可正可負,正數(shù)表示前進,負數(shù)表示后退;也可以是字符串,但必須是一個完整的URL地址。HTML5引入了兩個新方法:pushState和replaceState,這兩個方法允許修改history中的歷史條目。這兩個方法的詳細描述如下:pushState(state,title,url)——用于向history對象中添加一個條目。參數(shù)描述如下:◆state——與新創(chuàng)建的新歷史記錄相關(guān)的state對象。這個state對象可以是任意的JavaScript對象,可要能夠序列化即可,但大小有一定限制,mozilla規(guī)定不超過640K。瀏覽器將這個state對象保存在用戶的磁盤上,瀏覽器重啟后可以還原這個state。如果大小超640K的話,推薦使用HTML5的localeStorage和sessionStorage,Event對象中也有一個state屬性,與history.state是一樣的?!魌itle——要創(chuàng)建歷史條目的頁面標(biāo)題,注意它與<title>標(biāo)記指定的標(biāo)題沒有關(guān)系?!魎rl——新歷史條目的URL地址,可以是絕對地址,也可以是相對地址,但不能是跨域的地址。如果是相對地址的話,則以當(dāng)前頁面為準(zhǔn)。若為跨域地址則拋出異常。但請注意,調(diào)用此方法并不會加載指定的這個URL。該參數(shù)為可選參數(shù),如果沒有指定,則為當(dāng)前頁面的地址。replaceState(state,title,url)——用于修改當(dāng)前歷史條目,用法與pushState()類似,參數(shù)也與pushState一致,在此不再贅述。HTML5還引入了一個onpopstate事件,在當(dāng)前歷史條目發(fā)生改變時觸發(fā),即單擊“前進”和“后退”按鈕,或調(diào)用go()、forward()和back()時觸發(fā)該事件。注意,調(diào)用pushState和replaceState方法不會觸發(fā)onpopstate事件。注意,調(diào)用pushState和replaceState方法不會觸發(fā)onpopstate事件。在這個例子中創(chuàng)建一個history.state對象,并把它通過pushState方法添加到history對象中;并給onpopstate對象注冊一個事件處理函數(shù),在這個函數(shù)中簡單的把文件標(biāo)題改成state對象中的標(biāo)題,并通過alert()方法提示用戶。操作步驟第一步是創(chuàng)建一個history.state對象。前面講過這個state對象是任意的對象,只要能夠序列化即可。下面聲明一個state對象,當(dāng)然也可以是其他的結(jié)構(gòu),這只不過是一個例子:varstate={//我們創(chuàng)建的state對象 title:"pushStatedemo", url:"Listing8-6.html"};第二步,通過調(diào)用pushState方法向history對象添加一條歷史條目,代碼如下:history.pushState(state,"pushStatedemo","Listing8-6.html");這里的state就是上一步創(chuàng)建的state對象,"pushStatedemo"是這個歷史條目的標(biāo)題,"Listing8-6.html"是這個歷史條目對應(yīng)的URL,注意此時瀏覽器不會加載這個Listing8-6.html網(wǎng)頁文件。第三步,就是要為onpopstate事件注冊事件處理函數(shù),需要的代碼如下:window.onpopstate=function(e){ document.title=e.state.title; alert(e.state.title);}從這段代碼可以看出,onpopstate是window對象的一個事件。用匿名函數(shù)作為事件處理函數(shù)。匿名函數(shù)中參數(shù)e就是發(fā)生的事件對象,它有一個state屬性,指向存放在history中的state對象;e.state.title中的title就是第一步中聲明的state對象中的title屬性。document.title用于訪問文檔的title屬性,這里用于對title賦值,也就是把當(dāng)前文檔的title修改為history.state對象中的title的值。第四步,就是要在網(wǎng)頁中提供觸發(fā)onpopstate事件的活動,前面講過只有“在當(dāng)前歷史條目發(fā)生改變時觸發(fā)”,也就是單擊“前進”和“后退”按鈕時觸發(fā),或者調(diào)用history的forward(),back()和go()時觸發(fā)該事件。通過兩個鏈接,在鏈接的onclick事件中調(diào)用go()方法觸發(fā)onpopstate事件,代碼如下:<ahref=""onclick="history.go(-1);">前一頁</a><ahref=""onclick="history.go(1);">后一頁</a> 這里的go(-1)是指向歷史的前一條記錄,go(1)是指向歷史的后一條記錄。完整的代碼如清單8-7所示。完整的代碼見隨書源碼的Listing8-6.html。要對這個例子進行測試的話比較復(fù)雜,因為pushState方法傳遞的URL不能是跨域的地址,所以如果直接從硬盤上運行Listing8-6.html的話,會收到一條如下的錯誤信息它的意思是,由于文檔的源——由規(guī)則(scheme)、主機(host)和端口(port)組成——為null,所以不能為URL地址添加歷史條目。所以要想運行這個例子,必須把它放在服務(wù)器上。這里我們把Listing8-6.html文件放在Tomcat的webapps\ROOT文件夾下,啟動Tomcat

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論