版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章專用于手機(jī)的JavaScript_ESMP7.1使用ESMPECMAScriptMobileProfile簡(jiǎn)稱ESMP,是OMA專為手機(jī)定義的一個(gè)腳本標(biāo)準(zhǔn)。它是基于ECMA-262第三版指定的,并且還增加了BOM、CoreDOM和HTMLDOM的定義。ECMA-262三足鼎立:Netscape發(fā)明了JavaScript;微軟發(fā)布IE3.0時(shí)搭載了一個(gè)JavaScript的克隆版,叫做Jscript;CEnvi
中的ScriptEase。歐洲計(jì)算機(jī)制造商協(xié)會(huì)ECMA完成統(tǒng)一,形成ECMA-262,該標(biāo)準(zhǔn)定義了名為ECMAScript
的全新腳本語(yǔ)言。1999年12月發(fā)布的ECMA-262第三版,目前所有主流的Web瀏覽器都遵守。ECMAScript盡管ECMAScript
是一個(gè)重要的標(biāo)準(zhǔn),但它并不是JavaScript唯一的部分,也不是唯一被標(biāo)準(zhǔn)化的部分。實(shí)際上,一個(gè)完整的JavaScript實(shí)現(xiàn)是由以下3個(gè)不同部分組成的:?核心(ECMAScript)?文檔對(duì)象模型(DOM)?瀏覽器對(duì)象模型(BOM)ECMAScriptJavaScript的核心ECMAScript
描述了該語(yǔ)言的語(yǔ)法和基本對(duì)象;DOM描述了處理網(wǎng)頁(yè)內(nèi)容的方法和接口;BOM描述了與瀏覽器進(jìn)行交互的方法和接口。7.1.1ESMP與ECMAScript的不同ESMP于ECMA-262第三版的不同之處主要表現(xiàn)在以下幾個(gè)方面:ESMP為所有內(nèi)建對(duì)象(不包括BOM)定義了一個(gè)version屬性,格式為M.m.I.i。支持UTR-8和UTF-16編碼ESMP支持非轉(zhuǎn)義字符前加一個(gè)反斜杠禁止使用ES-CP中限制的語(yǔ)法ESMP定義了宿主BOM對(duì)象、HTMLDOM和CoreDOM7.1.1ESMP與ECMAScript的不同ESMP規(guī)定必須用分號(hào)結(jié)束語(yǔ)句ESMP規(guī)定,String的toLowerCase()和toUpperCase()方法分別等同于toLocaleLowerCase()和toLocaleUpperCase()方法。ESMP對(duì)Array類(lèi)的sort()方法指定的參數(shù)不是一個(gè)函數(shù)時(shí)拋出TypeError異常。ESMP增加了一個(gè)MemeryError異常類(lèi)型,為Error類(lèi)增加了code屬性。RegExp對(duì)象的multiline屬性以及模式修正符m不支持。7.1.1ESMP與ECMAScript的不同Array類(lèi)的sort()方法格式:arrayObject.sort(sortby)無(wú)參調(diào)用時(shí),按照字符編碼的順序進(jìn)行排序。如果想按照其他標(biāo)準(zhǔn)進(jìn)行排序,就需要提供比較函數(shù)。sort1.html7.1.1ESMP與ECMAScript的不同函數(shù)要比較兩個(gè)值,然后返回一個(gè)用于說(shuō)明這兩個(gè)值的相對(duì)順序的數(shù)字。比較函數(shù)應(yīng)該具有兩個(gè)參數(shù)a和b,其返回值如下:若a小于b,在排序后的數(shù)組中a應(yīng)該出現(xiàn)在b之前,則返回一個(gè)小于0的值。若a等于b,則返回0。若a大于b,則返回一個(gè)大于0的值。sort2.html7.1.2ESMPBOMBOM是BrowserObjectModel的縮寫(xiě),簡(jiǎn)稱瀏覽器對(duì)象模型。
BOM提供了獨(dú)立于內(nèi)容而與瀏覽器窗口進(jìn)行交互的API,這些API由若干對(duì)象組成,稱為宿主對(duì)象。每個(gè)對(duì)象都提供了很多方法與屬性。
由于BOM主要用于管理窗口與窗口之間的通訊,因此其核心對(duì)象是window。7.1.2ESMPBOM基本的BOM體系結(jié)構(gòu)圖7.1.2ESMPBOM1.window對(duì)象window對(duì)象是瀏覽器頂層的一個(gè)對(duì)象,是瀏覽器窗口這個(gè)類(lèi)的一個(gè)實(shí)例。它可以產(chǎn)生其他的對(duì)象,稱為window的子對(duì)象,如history、location、document等。調(diào)用其方法和屬性無(wú)需指定對(duì)象名。document.write("BOM");window.document.write("BOM");7.1.2ESMPBOM1.window對(duì)象屬性:history、navigator、location、document。方法:prompt()、confirm()、alert()、setTimeout()、clearTimeout()JavaScript消息框警告框:alert("文本")用戶需要點(diǎn)擊確定按鈕才能繼續(xù)進(jìn)行操作。
確認(rèn)框:confirm("文本")如果用戶點(diǎn)擊確認(rèn),那么返回值為true。如果用戶點(diǎn)擊取消,那么返回值為false。
提示框:prompt("文本","默認(rèn)值")如果用戶點(diǎn)擊確認(rèn),那么返回值為輸入的值。如果用戶點(diǎn)擊取消,那么返回值為null。
alert.htmlsetTimeout()和clearTimeout()setTimeout():暫停指定的毫秒數(shù)后執(zhí)行指定的代碼。
clearTimeout():在暫停時(shí)間段內(nèi)可用來(lái)取消setTimeout函數(shù)指定的將要執(zhí)行的代碼。setTimeout()和clearTimeout()語(yǔ)法格式:如要考慮用clearTimeout
()
取消,則調(diào)用setTimeout()時(shí)要將其賦給一個(gè)變量。variTimerID=window.setTimeout(func[,delay[,arguments…]]);window.clearTimeout(iTimerID);timeout.html7.1.2ESMPBOM2.navigator對(duì)象window.navigator
對(duì)象包含有關(guān)訪問(wèn)者瀏覽器的信息。Navigator對(duì)象包含了正在使用的瀏覽器的版本信息,可以通過(guò)它獲取瀏覽器已經(jīng)安裝的插件、支持MIME類(lèi)型等信息。使用window.navigator屬性可以返回一個(gè)navigator對(duì)象,該對(duì)象包含一些方法、屬性、集合等成員。7.1.2ESMPBOM2.navigator對(duì)象屬性:appName
返回瀏覽器的名稱appVersion
返回瀏覽器的平臺(tái)和版本信息
userAgent
返回由客戶機(jī)發(fā)送服務(wù)器的user-agent頭部的值。7.1.2ESMPBOM使用forin循環(huán)查看這些成員的值:<script>for(iinwindow.navigator){
document.write(i+“===”+window.navigator[i]+”<br/>”);}</script>navigator.html7.1.2ESMPBOM2.navigator對(duì)象用navigator.userAgent來(lái)識(shí)別瀏覽器警告:來(lái)自navigator對(duì)象的信息具有誤導(dǎo)性,不應(yīng)該被用于檢測(cè)瀏覽器版本,這是因?yàn)椋簄avigator數(shù)據(jù)可被瀏覽器使用者更改瀏覽器無(wú)法報(bào)告晚于瀏覽器發(fā)布的新操作系統(tǒng)checknavigator.html7.1.2ESMPBOM3.history對(duì)象history對(duì)象指瀏覽器的瀏覽歷史。屬性:length返回瀏覽器歷史列表中的URL數(shù)量方法:back()加載history列表中的前一個(gè)
URLforward()加載history列表中的下一個(gè)URLgo([num])加載history列表中的某個(gè)具體頁(yè)面,參數(shù)num是字符串則表示歷史中的URL,數(shù)字則表示前進(jìn)或后退的步數(shù)。history.html7.1.2ESMPBOM4.location對(duì)象window.location
對(duì)象用于獲得某個(gè)窗口對(duì)象所打開(kāi)的地址(URL),并把瀏覽器重定向到新的頁(yè)面。表示當(dāng)前窗口直接用location,其他窗口用“窗口對(duì)象名.location”。出于安全性需要,屬于不同協(xié)議或不同主機(jī)的兩個(gè)地址間不能互相引用對(duì)方的location對(duì)象。var
newWindow=window.open(“timeout.html”);document.write(newWindow.location);document.write(location);location.html7.1.2ESMPBOM4.location對(duì)象屬性:hash設(shè)置或返回從井號(hào)(#)開(kāi)始的URL(錨)host設(shè)置或返回主機(jī)名和當(dāng)前URL的端口號(hào)href
設(shè)置或返回完整的URLhostname設(shè)置或返回當(dāng)前URL的主機(jī)名pathname設(shè)置或返回當(dāng)前URL的路徑部分port設(shè)置或返回當(dāng)前URL的端口號(hào)protocol設(shè)置或返回當(dāng)前URL的協(xié)議search設(shè)置或返回從問(wèn)號(hào)(?)開(kāi)始的URL(查詢部分)
7.1.2ESMPBOM4.location對(duì)象方法:assign()加載新的文檔,這與直接將一個(gè)URL賦值給Location對(duì)象的href屬性效果是一樣的。replace()用新的文檔替換當(dāng)前文檔,replace()方法不會(huì)在History對(duì)象中生成一個(gè)新的紀(jì)錄。當(dāng)使用該方法時(shí),新的URL將覆蓋History對(duì)象中的當(dāng)前紀(jì)錄。7.1.2ESMPBOM4.location對(duì)象方法:reload()重新加載當(dāng)前文檔,若無(wú)參數(shù),或參數(shù)是false,就會(huì)用HTTP頭If-Modified-Since來(lái)檢測(cè)服務(wù)器上的文檔是否已改變。若文檔已改變,reload()會(huì)再次下載該文檔。否則該方法將從緩存中裝載文檔。這與用戶單擊瀏覽器的刷新按鈕的效果是完全一樣的。如果把該方法的參數(shù)設(shè)置為true,那么無(wú)論文檔的最后修改日期是什么,它都會(huì)繞過(guò)緩存,從服務(wù)器上重新下載該文檔。這與用戶在單擊瀏覽器的刷新按鈕時(shí)按住Shift健的效果是完全一樣。location2.html7.1.2ESMPBOM5.document對(duì)象每個(gè)載入瀏覽器的HTML文檔都會(huì)成為Document對(duì)象。它使我們可以從腳本中對(duì)HTML頁(yè)面中的所有元素進(jìn)行訪問(wèn)。7.1.2ESMPBOM5.document對(duì)象屬性:cookie設(shè)置或返回與當(dāng)前文檔有關(guān)的所有cookiedomain返回當(dāng)前文檔的域名referrer返回載入當(dāng)前文檔的文檔的URLtitle返回當(dāng)前文檔的標(biāo)題創(chuàng)建Cookie.html相同Origin策略的限制——同源策略對(duì)于JavaScript程序,存在相同Origin策略的限制,即同源策略。同源策略阻止從一個(gè)Origin加載的文檔或者腳本訪問(wèn)從另一個(gè)Origin加載的文檔的屬性(即DOM)。如果協(xié)議、端口、主機(jī)相同,那么就認(rèn)為兩個(gè)文檔具有相同的Origin。相同Origin策略的限制——同源策略針對(duì)地址/dir/page.htmlURL匹配原因/dir2/other.htmlyeshttp:///dir/a/other.htmlyes:81/dir/etc.htmlno不同端口http:///dir/other.htmlno不同主機(jī)執(zhí)行設(shè)置:document.domain=“”;7.1.2ESMPBOM方法:clear()用來(lái)清除一個(gè)文檔中的內(nèi)容open()打開(kāi)一個(gè)流,以收集來(lái)自任何document.write()或document.writeln()的輸出close()關(guān)閉用document.open()方法打開(kāi)的輸出流,并顯示選定的數(shù)據(jù)write()向文檔寫(xiě)HTML表達(dá)式或JavaScript代碼writeln()等同write()并在每個(gè)表達(dá)式之后寫(xiě)一個(gè)換行符doc.html
、doc1.html7.1.3ESMPCoreDOMDocumentObjectModel,文檔對(duì)象模型。是W3C指定的一簇規(guī)范,它是獨(dú)立于平臺(tái)和語(yǔ)言的一系列接口定義。DOM是文檔在內(nèi)存中的表現(xiàn)形式,它是一個(gè)應(yīng)用程序接口,定義了該文檔的邏輯結(jié)構(gòu)以及一套訪問(wèn)和處理文檔的方法。對(duì)應(yīng)的應(yīng)用程序可以跨語(yǔ)言跨平臺(tái)。7.1.3ESMPCoreDOM例如:客戶端瀏覽器是一個(gè)處理HTML和XML文檔的應(yīng)用程序,它必須將文檔解析成DOM才能夠以編程方式讀取、操作和呈現(xiàn)HTML、XML文檔。例如所有瀏覽器都支持使用DOM接口定義的方法來(lái)處理HTML文檔中的內(nèi)容、結(jié)構(gòu)和樣式,這樣可以減少對(duì)瀏覽器兼容性的考慮。DOM的起源DOM歷史可以追溯至1990年代后期微軟與Netscape的“瀏覽器大戰(zhàn)”,雙方為了在JavaScript與JScript一決生死,于是大規(guī)模的賦予瀏覽器強(qiáng)大的功能。微軟在網(wǎng)頁(yè)技術(shù)上加入了不少專屬事物,包括VBScript、ActiveX、以及微軟自家的DHTML格式等,使不少網(wǎng)頁(yè)使用非微軟平臺(tái)及瀏覽器無(wú)法正常顯示。DOM應(yīng)運(yùn)而生。DOM的發(fā)展最初是一種讓JavaScript在瀏覽器間可移植的方法,不過(guò)其應(yīng)用已經(jīng)遠(yuǎn)遠(yuǎn)超出這個(gè)范圍。DOM技術(shù)使得用戶頁(yè)面可以動(dòng)態(tài)地變化,如可以動(dòng)態(tài)地顯示或隱藏一個(gè)元素,改變它們的屬性,增加一個(gè)元素等,DOM技術(shù)使得頁(yè)面的交互性大大地增強(qiáng)。DOM的分級(jí)根據(jù)W3CDOM規(guī)范,DOM是HTML與XML的應(yīng)用編程接口(API),DOM將整個(gè)頁(yè)面映射為一個(gè)由層次節(jié)點(diǎn)組成的文件。有1級(jí)、2級(jí)、3級(jí)共3個(gè)級(jí)別。DOM的分級(jí)根據(jù)W3CDOM規(guī)范,DOM是HTML與XML的應(yīng)用編程接口(API),DOM將整個(gè)頁(yè)面映射為一個(gè)由層次節(jié)點(diǎn)組成的文件。有1級(jí)、2級(jí)、3級(jí)共3個(gè)級(jí)別。1級(jí)DOM:由DOM核心與DOMHTML兩個(gè)模塊組成。DOM核心能映射以XML為基礎(chǔ)的文檔結(jié)構(gòu),允許獲取和操作文檔的任意部分。DOMHTML通過(guò)添加HTML專用的對(duì)象與函數(shù)對(duì)DOM核心進(jìn)行了擴(kuò)展。DOM的分級(jí)2級(jí)DOM:2級(jí)DOM通過(guò)對(duì)象接口增加了對(duì)鼠標(biāo)和用戶界面事件、范圍、遍歷和層疊樣式表(CSS)的支持。同時(shí)也對(duì)DOM1的核心進(jìn)行了擴(kuò)展,從而可支持XML命名空間。3級(jí)DOM:引入統(tǒng)一方式載入和保存文檔和文檔驗(yàn)證方法對(duì)DOM進(jìn)一步擴(kuò)展,DOM3包含一個(gè)名為“DOM載入與保存”的新模塊,DOM核心擴(kuò)展后可支持XML1.0的所有內(nèi)容,包擴(kuò)XMLInfoset、XPath、和XMLBase。DOM的分級(jí)目前大部分瀏覽器軟件都可以部分獲取全部實(shí)現(xiàn)DOMlevel2規(guī)范簇,HTML5DOMAPI也是大量基于DOMlevel2規(guī)范簇的。HTML網(wǎng)頁(yè)加載DOM瀏覽器解析7.1.3ESMPCoreDOMW3C規(guī)定的三類(lèi)DOM標(biāo)準(zhǔn)接口:CoreDOM(核心DOM),適用于各種結(jié)構(gòu)化文檔;XMLDOM,專用于XML文檔;HTMLDOM,專用于HTML文檔。ESMPCoreDOM僅定義了3種節(jié)點(diǎn)類(lèi)型,即Document、Element、Text節(jié)點(diǎn)(nodeType返回9,1,3),并為每個(gè)節(jié)點(diǎn)規(guī)定了少量的方法和屬性。7.1.3ESMPCoreDOM1.DOMException屬性:message,獲取導(dǎo)致異常的消息字符串;code,獲取拋出的異常的類(lèi)型,該屬性的返回值為一個(gè)整數(shù)。常量:見(jiàn)表7-37.1.3ESMPCoreDOM2.NodeNode對(duì)象是整個(gè)DOM的主要數(shù)據(jù)類(lèi)型。節(jié)點(diǎn)對(duì)象代表文檔樹(shù)中的一個(gè)單獨(dú)的節(jié)點(diǎn)。節(jié)點(diǎn)可以是元素節(jié)點(diǎn)、屬性節(jié)點(diǎn)、文本節(jié)點(diǎn)等,可以通過(guò)節(jié)點(diǎn)查看器查看。node.html7.1.3ESMPCoreDOM2.Node根據(jù)DOM,HTML文檔中的每個(gè)成分都是一個(gè)節(jié)點(diǎn)。DOM是這樣規(guī)定的:整個(gè)文檔是一個(gè)文檔節(jié)點(diǎn)每個(gè)HTML標(biāo)簽是一個(gè)元素節(jié)點(diǎn)包含在HTML元素中的文本是文本節(jié)點(diǎn)每一個(gè)HTML屬性是一個(gè)屬性節(jié)點(diǎn)注釋屬于注釋節(jié)點(diǎn)7.1.3ESMPCoreDOM節(jié)點(diǎn)彼此都有等級(jí)關(guān)系。HTML文檔中的所有節(jié)點(diǎn)組成了一個(gè)文檔樹(shù)(或節(jié)點(diǎn)樹(shù))。HTML文檔中的每個(gè)元素、屬性、文本等都代表著樹(shù)中的一個(gè)節(jié)點(diǎn)。樹(shù)起始于文檔節(jié)點(diǎn),并由此繼續(xù)伸出枝條,直到處于這棵樹(shù)最低級(jí)別的所有文本節(jié)點(diǎn)為止。7.1.3ESMPCoreDOM屬性:nodeName:節(jié)點(diǎn)的名稱,只讀,元素節(jié)點(diǎn)名與標(biāo)簽名相同;屬性節(jié)點(diǎn)名是屬性的名稱;文本節(jié)點(diǎn)名永遠(yuǎn)是#text;文檔節(jié)點(diǎn)名永遠(yuǎn)是#document。nodeValue:節(jié)點(diǎn)的值。元素節(jié)點(diǎn)值是undefined;文本節(jié)點(diǎn)的值是文本自身;屬性節(jié)點(diǎn)的值是屬性的值。
nodeType
:節(jié)點(diǎn)的類(lèi)型,只讀。7.1.3ESMPCoreDOM屬性:parentNode、childNode、firstChild、lastChild、previousSibling、nextSibling、attributes、ownerDocument、namespaceURI、prefix、localName方法:hasAttributes()、haschildNodes()、insertBefore()、replaceChild()、removeChild()、appendChild()、cloneNode()克隆節(jié)點(diǎn).html、替換節(jié)點(diǎn).html、遍歷結(jié)點(diǎn)樹(shù).html7.1.3ESMPCoreDOM3.Document方法:getElementsByTagName()返回帶有指定標(biāo)簽名的所有元素,如:document.getElementsByTagName("p");getElementById()返回帶有指定ID的元素,如:document.getElementById("id");7.1.3ESMPCoreDOM3.Document方法:creatElement()、createTextNode()//創(chuàng)建一個(gè)P元素節(jié)點(diǎn)var
para=document.createElement("p");varnode=document.createTextNode("Thisisnew.");para.appendChild(node);createElement.html7.1.3ESMPCoreDOM4.NodeList當(dāng)使用諸如getElementsByTagName()或childNodes屬性或方法時(shí),會(huì)返回NodeList
對(duì)象。NodeList
對(duì)象表示節(jié)點(diǎn)的列表。使用從0開(kāi)始的下標(biāo)來(lái)訪問(wèn)節(jié)點(diǎn)列表中的節(jié)點(diǎn)。NodeList
對(duì)象會(huì)保持自身的更新。如果刪除或添加了元素,列表會(huì)自動(dòng)更新。7.1.3ESMPCoreDOM4.NodeList屬性:length列表中節(jié)點(diǎn)的數(shù)量,例如:x=document.getElementsByTagName(‘p').length;方法:item()返回節(jié)點(diǎn)列表中處于指定索引號(hào)的節(jié)點(diǎn),如:item(index)index表示NodeList
中節(jié)點(diǎn)位置的整數(shù)。該值是大于等于0小于等于NodeList.length-1的整數(shù)。x=document.getElementsByTagName(‘p');for(i=0;i<x.length;i++){//僅顯示元素節(jié)點(diǎn)if(x.item(i).nodeType==1){
document.write(x.item(i).nodeName);
document.write("<br/>");}}7.1.3ESMPCoreDOM5.Element屬性:tagName方法:getAttribute()、setAttribute()、removeAttribute()、getElementsByTagName()、hasAttribute()element.html7.1.3ESMPCoreDOM6.Text屬性:data設(shè)置或返回元素或?qū)傩缘奈谋?、length返回元素或?qū)傩缘奈谋鹃L(zhǎng)度方法:appendData()向節(jié)點(diǎn)追加數(shù)據(jù)、deleteData()從節(jié)點(diǎn)刪除數(shù)據(jù)、insertData()向節(jié)點(diǎn)中插入數(shù)據(jù)、replaceData()替換節(jié)點(diǎn)中的數(shù)據(jù)、substringData()從節(jié)點(diǎn)提取數(shù)據(jù)7.1.4ESMPHTMLDOMHTMLDOM定義了訪問(wèn)和操作HTML文檔的專用API,它是對(duì)核心DOM的擴(kuò)展,目前主流瀏覽器都支持。對(duì)核心DOM的擴(kuò)展:指定和添加了特用于HTML文檔和元素的API。實(shí)現(xiàn)和DOMLevel0兼容。提供一種便利的機(jī)制用于對(duì)HTML文檔的一般性操作。7.1.4ESMPHTMLDOM1.document對(duì)象代表整個(gè)HTML文檔,可被用來(lái)訪問(wèn)頁(yè)面中的所有元素。doc-links.htmldoc-form.html7.1.4ESMPHTMLDOM7.1.4ESMPHTMLDOM2.link元素對(duì)象屬性描述href設(shè)置或返回被鏈接資源的URLmedia設(shè)置或返回文檔顯示的設(shè)備類(lèi)型name設(shè)置或返回<link>元素的名稱rel設(shè)置或返回當(dāng)前文檔與目標(biāo)URL之間的關(guān)系type設(shè)置或返回目標(biāo)URL的MIME類(lèi)型<head><linkrel="stylesheet"type="text/css"id="style1"href="style1.css"/><scripttype="text/javascript">functionchangeStyle(){ document.getElementById("style1").href="style2.css";}</script></head>link對(duì)象.html7.1.4ESMPHTMLDOM3.form元素對(duì)象屬性或方法描述elements[]包含表單中所有元素的數(shù)組。action設(shè)置或返回表單的action屬性。enctype設(shè)置或返回表單用來(lái)編碼內(nèi)容的MIME類(lèi)型。length返回表單中的元素?cái)?shù)目。method設(shè)置或返回將數(shù)據(jù)發(fā)送到服務(wù)器的HTTP方法。name設(shè)置或返回表單的名稱。reset()把表單的所有輸入元素重置為它們的默認(rèn)值。submit()提交表單。form對(duì)象.html7.1.4ESMPHTMLDOM4.textinput元素對(duì)象屬性描述defaultValue設(shè)置或返回文本域的默認(rèn)值。form返回一個(gè)對(duì)包含文本域的表單對(duì)象的引用。maxLength設(shè)置或返回文本域中的最大字符數(shù)。name設(shè)置或返回文本域的名稱。size設(shè)置或返回文本域的尺寸。type返回文本域的表單元素類(lèi)型。value設(shè)置或返回文本域的value屬性的值。7.1.4ESMPHTMLDOM4.textinput元素對(duì)象方法描述select()選取文本域中的內(nèi)容。blur()從文本域上移開(kāi)焦點(diǎn)。focus()在文本域上設(shè)置焦點(diǎn)。text對(duì)象.html5.passwordinput元素對(duì)象屬性、方法:同text7.1.4ESMPHTMLDOM6.textarea元素對(duì)象屬性或方法描述cols設(shè)置或返回textarea
的寬度。form返回對(duì)包含該textarea
的表單對(duì)象的引用。name設(shè)置或返回textarea
的名稱。rows設(shè)置或返回textarea
的高度。type返回該文本框的表單類(lèi)型。value設(shè)置或返回在textarea
中的文本。select()、blur()、focus()7.1.4ESMPHTMLDOM7.radioinput元素對(duì)象屬性:checked、defaultchecked、form、length、name、type、value方法:click()radio對(duì)象.html8.checkboxinput元素對(duì)象屬性、方法:同radio7.1.4ESMPHTMLDOM9.submitinput元素對(duì)象屬性:form、name、type、value方法:click()10.resetinput元素對(duì)象屬性:form、name、type、value方法:click()7.1.4ESMPHTMLDOM11.selectinput元素對(duì)象屬性:form、length、name、options[]返回包含下拉列表中的所有選項(xiàng)的一個(gè)數(shù)組、selectedIndex、size、type、value方法:add()、remove()向下拉列表添加或刪除一個(gè)選項(xiàng)。select對(duì)象.html7.1.4ESMPHTMLDOM12.option元素對(duì)象屬性:defaultSelected返回selected屬性的初始值、form、label、selected、text、value13.button元素對(duì)象屬性:form、name、type、value方法:blur()、click()、focus()option對(duì)象.html7.2使用JavaScript的注意事項(xiàng)
7.2.1檢測(cè)瀏覽器支持檢測(cè)是否支持兩個(gè)基本方法,以此來(lái)檢測(cè)是否有基本的DOM支持。functionhasBasicDOM(){ if(document.getElementById&&document.getElementByTagName) returntrue; returnfalse;7.2.1檢測(cè)瀏覽器支持DOM標(biāo)準(zhǔn)的檢測(cè)方式是使用DOMImplementation接口定義的hasFeature()方法,一般實(shí)現(xiàn)該接口的瀏覽器都會(huì)完全支持DOMLevel2,也可以檢測(cè)特定的支持項(xiàng)。格式:document.implementation.hasFeature(feature,version)7.2.1檢測(cè)瀏覽器支持feature定義要檢測(cè)的模塊名,見(jiàn)表7-4。version是要檢測(cè)的模塊的版本號(hào)。如不指定則檢測(cè)所有版本,只要一個(gè)支持就返回true。例如://獲得DOMImplementationif(document.implementation){varimplementation=document.implementation;if(implementation.hasFeature){ if(implementation.hasFeature(“XML”,”1.0”)) alert(“支持XML1.0”);
elsealert(“不支持XML1.0”);}}7.2.2關(guān)于打開(kāi)新窗口避免使用window.open()方法和document.open()方法,因?yàn)椴⒎撬惺謾C(jī)瀏覽器均支持多窗口。不要使用window.showModalDialog()方法打開(kāi)模式對(duì)話框,大部分手機(jī)瀏覽器都不支持該功能。7.2.3關(guān)于間隔調(diào)用setInterval()按照間隔指定的毫秒數(shù)循環(huán)執(zhí)行指定的代碼;clearInterval()取消對(duì)應(yīng)setInterval函數(shù)指定的循環(huán)。不要使用setInterval()方法進(jìn)行間隔調(diào)用,建議使用setTimeout()方法來(lái)代替。因?yàn)樵谑褂胹etInterval()方法進(jìn)行間隔調(diào)用時(shí),如果要調(diào)用的函數(shù)執(zhí)行時(shí)間超過(guò)間隔期就會(huì)導(dǎo)致不可預(yù)知的錯(cuò)誤。打字機(jī).html7.2.3關(guān)于間隔調(diào)用例如設(shè)置每100毫秒執(zhí)行一次函數(shù),但函數(shù)的操作時(shí)間需要200毫秒才能完成,這就可能導(dǎo)致異常,可能同時(shí)有兩個(gè)函數(shù)在運(yùn)行。functionsomeFunction(){ //運(yùn)行函數(shù)功能需要200毫秒}window.setInterval(someFunction,100);7.2.3關(guān)于間隔調(diào)用解決方法是用setTimeout()方法來(lái)代替。functionsomeFunction(){ //運(yùn)行函數(shù)功能需要200毫秒
//執(zhí)行完成后,再次延遲100毫秒繼續(xù)
setTimeout(someFunction,100);}setTimeout(someFunction,100);7.2.4隱藏瀏覽器工具條使用window.scrollTo()方法可以將瀏覽器窗口中的文檔滾動(dòng)到相對(duì)左上角指定x和y距離的位置。目前主流手機(jī)瀏覽器都支持該功能,因此可以用來(lái)隱藏工具條。window.scrollTo(0,1);7.2.4隱藏瀏覽器工具條一般來(lái)說(shuō),應(yīng)該在問(wèn)的那個(gè)加載完成后再調(diào)用該方法,例如下面代碼,注冊(cè)load時(shí)間,在事件監(jiān)聽(tīng)函數(shù)中調(diào)用該方法。<scripttype=“text/javascript”>addEventListener(“l(fā)oad”,hideURLbar,false);functionhideURLbar(){ window.scrollTo(0,1);}</script>7.2.4隱藏瀏覽器工具條有一種特殊情況是網(wǎng)頁(yè)太短導(dǎo)致不能滾動(dòng),這時(shí)要么為body元素設(shè)置min-height樣式屬性大于某個(gè)高度,要么使用下面的元數(shù)據(jù)聲明,使視點(diǎn)的高度等于設(shè)備的高度,這樣肯定超出了瀏覽器窗口可視高度,因此肯定會(huì)有滾動(dòng)。<metaname=“viewport”content=“height=device-height”/>hideURLbar.html7.3定義和觸發(fā)事件手機(jī)上使用JavaScript另一個(gè)較大的不同就是對(duì)事件的處理,與桌面系統(tǒng)的差異明顯。另一個(gè)需要注意的就是IEMobile不支持W3C事件,所以必須尋找兼容性的方法,這與桌面上IE與其他瀏覽器的差別是相同的。一般定義如下函數(shù)來(lái)實(shí)現(xiàn)兼容:P1367.3.1基本交互事件鍵盤(pán)手機(jī)的事件處理很簡(jiǎn)單,就是keydown、keypress、keyup,這與桌面一致。而觸摸屏手機(jī)則不同,如ondbclick和onmousewheel事件等都不適用于手機(jī)。觸摸屏手機(jī)沒(méi)有focus和blur事件,而都支持click事件。大多數(shù)也支持下面幾個(gè)連續(xù)事件:mouseover、mousemove、mousedown、mouseup、mouseoutcheckmouse.html7.3.2關(guān)于軟鍵盤(pán)事件對(duì)于觸摸屏,一般都是使用軟鍵盤(pán),其出發(fā)的時(shí)間應(yīng)由change監(jiān)聽(tīng),軟鍵盤(pán)也有keydown、keypress、keyup事件。但若按按鍵時(shí)間長(zhǎng)或連續(xù)按鍵會(huì)出現(xiàn)另一個(gè)字符,這些只有被寫(xiě)到輸入框時(shí)才有辦法捕捉到。7.3.3感知手機(jī)握持方向和orientationchange事件iPhone和Android支持orientationchange事件,在手機(jī)旋轉(zhuǎn)時(shí)會(huì)觸發(fā),一般可以通過(guò)其判斷手機(jī)握持方向。下面是一個(gè)通用方法,根據(jù)幾個(gè)特定屬性的比較來(lái)確定手機(jī)握持的方向。7.4觸摸和手勢(shì)iPhone和Android支持觸摸
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子設(shè)備選購(gòu)合同
- 服務(wù)合同感言
- 鋼琴教師合同范本
- 房屋交易合同的履行期限
- 蔬菜供應(yīng)銷(xiāo)售協(xié)議
- 房屋買(mǎi)賣(mài)合同的撤銷(xiāo)與變更
- 標(biāo)準(zhǔn)房屋買(mǎi)賣(mài)合同翻譯
- 牧業(yè)承包合同問(wèn)答詳解
- 無(wú)抵押擔(dān)保合同協(xié)議范例
- 消防安全評(píng)估與設(shè)備更新合同
- 汽車(chē)4S店6S管理
- 統(tǒng)編版高中語(yǔ)文必修一《故都的秋》《荷塘月色》比較閱讀-課件
- 醫(yī)療集團(tuán)組織架構(gòu)
- 電光調(diào)制實(shí)驗(yàn)報(bào)告
- 外研版二年級(jí)上冊(cè)英語(yǔ)試卷
- 收款憑證(自制Word打印版)
- 鑄鐵閘門(mén)檢驗(yàn)標(biāo)準(zhǔn)
- 某公司項(xiàng)目部質(zhì)量管理體系及制度
- 關(guān)于開(kāi)展全員營(yíng)銷(xiāo)活動(dòng)的實(shí)施方案
- 碩士開(kāi)題報(bào)告和文獻(xiàn)綜述模板-北京理工大學(xué)研究生院
- 俄語(yǔ)視聽(tīng)說(shuō)基礎(chǔ)教程1
評(píng)論
0/150
提交評(píng)論