DOM 笔记
DOM就是HTML頁(yè)面的模型,將每個(gè)標(biāo)簽作為一個(gè)對(duì)象,javascript通過調(diào)用DOM中的屬性,方法對(duì)網(wǎng)頁(yè)中的文本框,層等進(jìn)行編程控制
javascript——》DOM就是C#——》.NET FRAMEWORK
DOM也像winform一樣,通過事件,屬性,方法編程。
CSS+javascript+DOM=DHTML
一,window對(duì)象,代表當(dāng)前瀏覽器窗口,使用window對(duì)象的屬性,方法的時(shí)候可以省略window
1.confirm方法,顯示“確定”,“取消”對(duì)話框,按下“確定”返回true,否則返回false
2.navigate方法,重新導(dǎo)航到指定的地址。
3.setInterval,每個(gè)一段時(shí)間執(zhí)行指定的代碼,第一個(gè)參數(shù)為代碼的字符串,第二個(gè)參數(shù)為間隔時(shí)間(單位毫秒),返回值為定時(shí)器的標(biāo)識(shí)。<input type="button" value="滾動(dòng)" οnclick="setInterval('scroll()',500)"/>每調(diào)用一次setInterval都會(huì)產(chǎn)生一個(gè)新的定時(shí)器,并且舊的不會(huì)停止,所以看起來好像“越跑越快”
4.clearInterval取消setInterval的定時(shí)執(zhí)行,相當(dāng)于timer中的enabled=false。因?yàn)榭梢栽O(shè)定多個(gè)定時(shí)器,所以取消時(shí)要指定清除那個(gè)定時(shí)器的標(biāo)識(shí),即setInterval的返回值。
5.setTimeout,超時(shí)。也是定時(shí)執(zhí)行,但只執(zhí)行一次。對(duì)應(yīng)clearTimeout
二,body,document對(duì)象的事件
1.onload,網(wǎng)頁(yè)加載完畢時(shí)觸發(fā),瀏覽器一邊下載文檔一邊解析執(zhí)行,可能會(huì)出現(xiàn)javascript執(zhí)行時(shí)需要操作某個(gè)元素這個(gè)元素還沒加載,若這樣就要把操作的代碼放到onload事件中,或者把javascript放在元素之后,比如在頁(yè)面打開時(shí)就更改一個(gè)還未沒創(chuàng)建的按鈕的屬性,可這么做<body οnlοad="btn.value='ok';"/>
2.onunload,網(wǎng)頁(yè)關(guān)閉(或者離開)后觸發(fā)
3.onbeforeunload,在網(wǎng)頁(yè)準(zhǔn)備關(guān)閉(或者離開)后觸發(fā)。在事件中為“window.event.returnValue賦值(即設(shè)置要顯示的警告消息),這樣窗口離開(比如前進(jìn),后退,關(guān)閉)就會(huì)彈出確認(rèn)消息<body οnbefοreunlοad="window.event.returnValue='真的要放棄嗎?';"/>
4.其他事件。onclick,ondbclick,onkeydown,onkeypress,onkeyup,onmousedown,onmousemove,onmouseout,onmouseover,onmouseup.
三,window對(duì)象屬性。
1.window.location.href。獲取或設(shè)置地址。
2.window.event。用來獲得發(fā)生事件時(shí)的信息,事件不局限于window對(duì)象的時(shí)間,類似于winform中的eventArgs e。
altKey屬性,bool類型,類似還有ctrlKey,shiftKey.
clientX,clientY,客戶區(qū)的坐標(biāo);screenX,screenY,屏幕上的坐標(biāo);offsetX,offsetY鼠標(biāo)相對(duì)于事件源的坐標(biāo)
returnValue屬性,設(shè)置為false會(huì)取消默認(rèn)事件的處理。在超鏈接的onclick里面禁止訪問href的頁(yè)面;在表單校驗(yàn)的時(shí)候禁止提交表單到服務(wù)器;可考慮用這個(gè),如:<a href="http://www.baidu.com" οnclick="alert('禁止訪問');window.returnValue=false;">百度</a>
srcElement,獲得事件源對(duì)象。
keyCode發(fā)生事件時(shí)的按鍵值。
button,發(fā)生事件時(shí)鼠標(biāo)按鍵,1為左鍵,2為右鍵,3為左右鍵同時(shí)按。
3.screen對(duì)象,屏幕的信息;.height;.width
4.clipboardData對(duì)象,對(duì)粘貼板的操作。clearData("Text")清空粘貼板;getData("Text")讀取粘貼板的值,返回值為粘貼板中的內(nèi)容;setData("Text",val)設(shè)置粘貼板的值。參數(shù)永遠(yuǎn)是Text。練習(xí):可以復(fù)制地址給好友。
當(dāng)復(fù)制的時(shí)候body的oncopy方法被觸發(fā),直接return false就是禁止復(fù)制。<body οncοpy="alert('禁止復(fù)制!');return false;">
很多元素也有oncopy,onpaste事件。練習(xí):禁止粘貼賬號(hào)。
在網(wǎng)站中復(fù)制文章的時(shí)候?yàn)榱朔乐箍截慄h不添加文章來源,自動(dòng)在復(fù)制的內(nèi)容后添加版權(quán)聲明。
function modifyClipboard(){
clipboardData.setData('Text',clipboardData.getData('Text')+'本文來自。。。轉(zhuǎn)載請(qǐng)注明出處'+location.href);
}
οncοpy="setTimeout('modifyClipborad()',100)",不能在oncopy中執(zhí)行對(duì)粘貼板的操作,因此設(shè)定定時(shí)器,0.1秒后執(zhí)行,這樣就不再oncopy的執(zhí)行調(diào)用棧上了。
5.window.history.back()后退;window.history.forward()前進(jìn)。也可以用window.history.go(-1),window.history.go(1)前進(jìn)
6.window對(duì)象的document屬性,最復(fù)雜屬性之一。
document.write方法,向頁(yè)面中寫入內(nèi)容。。在onclick等事件中寫的代碼會(huì)沖掉頁(yè)面的內(nèi)容,只有在頁(yè)面加載過程中write才會(huì)與原有內(nèi)容融合在一起。write經(jīng)常在廣告代碼,整合資源代碼中被使用。
document.getElementByIdx_x_x_x方法(非常常用),根據(jù)元素的id獲得對(duì)象,網(wǎng)頁(yè)中id不能重復(fù),當(dāng)然你也可以直接通過元素的id來引用元素,但是有有效范圍,因此不建議直接通過id操作元素而是通過getElementById.
document.getElementByName,根據(jù)元素的name獲得對(duì)象,由于頁(yè)面中元素的name可以重復(fù),因此此方法返回值是對(duì)象數(shù)組。比如獲得radio的數(shù)組。
documen.getElementByTagName,獲得指定標(biāo)簽名稱的元素?cái)?shù)組。
練習(xí):點(diǎn)擊一個(gè)按鈕,被點(diǎn)擊的按鈕顯示“嗚嗚”,其他顯示“哈哈”
十秒鐘后協(xié)議文本框下的注冊(cè)按鈕才能被點(diǎn)擊,時(shí)鐘倒數(shù)。(btn.disabled=true)
加法計(jì)算器,利用控件的ID來獲得值相加注意用parsteInt轉(zhuǎn)換;美女時(shí)鐘、img控件加載圖片,用時(shí)間來改變組裝圖片的名字。
四,DOM的動(dòng)態(tài)創(chuàng)建。
1. 當(dāng)我們想動(dòng)態(tài)創(chuàng)建DOM對(duì)象時(shí)怎么辦呢?也許你想到了document.write,但是這個(gè)方法只能在頁(yè)面加載過程中動(dòng)態(tài)創(chuàng)建
可以調(diào)用document_createElement_x_x_x方法來創(chuàng)建具有指定標(biāo)簽的DOM對(duì)象,然后通過調(diào)用元素的a方法將新創(chuàng)建元素添加到相應(yīng)元素下(如div)。
2.幾乎所有的DOM元素都有innerText,innerHTML屬性(注意大小寫),分別是元素標(biāo)簽內(nèi)內(nèi)容的文本表示形式(標(biāo)簽內(nèi)部的文本,如<a>文本</a>)和HTML源代碼(標(biāo)簽內(nèi)部的代碼,如<div id='...'>innerHTML</div>),這兩個(gè)屬性是可讀可寫的。所以可用其動(dòng)態(tài)修改元素。。動(dòng)態(tài)產(chǎn)生的元素,瀏覽器中查看源代碼是看不到的,可以通過DebugBar——>DOM——>文檔——>HTML
五,其他。
1.冒泡事件。
2.事件中的this,我們之前有在事件響應(yīng)函數(shù)中用event.srcElement,現(xiàn)在我們還可以用this,this表示發(fā)生事件的控件。但是只有在事件響應(yīng)函數(shù)中才能使用this獲得發(fā)生事件的控件,在事件響應(yīng)函數(shù)調(diào)用的函數(shù)中是不能使用的,非要用的話要將this傳遞給函數(shù)或者使用event.srcElement
3.修改元素樣式不是設(shè)置class屬性,而是className屬性。
修改元素的樣式不能this.style="background-color:Red".單獨(dú)修改樣式的屬性使用style.屬性名。注意在CSS中屬性名在javascript中操作的時(shí)候?qū)傩悦赡懿灰粯?#xff0c;主要集中在哪些屬性名中含有-的屬性,因?yàn)閖avascript中-是不能做屬性,類名的。如CSS:background-color而javascript:style.background
4.控制層的顯示。修改style.display。=‘none’不顯示,=‘’顯示。
鼠標(biāo)進(jìn)入控件的事件是onmouseover,離開的事件是onmouseout,移動(dòng)的事件是onmousemove。
5.IE中body的事件范圍。在body上添加onclick、onmouseover、等事件響應(yīng)那么如果頁(yè)面沒有滿,則body中最后一個(gè)元素以下(但是橫向就不受限制)的部分是無法響應(yīng)事件的。必須得使用代碼在document上監(jiān)聽那些事件,比如document.οnmοuseοver=方法。。。
6.通過DOM讀取元素的top、left、width、height等取到的值是像10PX這樣的字符串,為這些屬性設(shè)值得時(shí)候IE可以是80,90這樣的數(shù)字,但FF必須是加PX,%等這樣的字符串形式,為了兼容統(tǒng)一我們要用字符串形式。
若要用DOM修改(比如自動(dòng)加寬)元素的大小要首先要取出元素的寬度然后用parseInt將寬度轉(zhuǎn)換為數(shù)字,然后再加上PX賦值回去。PS:不像C#中那樣,在JS中parseInt是盡可能解析出數(shù)字的,比如50fhdhjh它也能解析出50來。
7.層的定位操作。元素的position樣式值:static(無定位,顯示在默認(rèn)位置)、absolute(絕對(duì)定位)、fixed(相對(duì)于窗口的固定定位,位置不會(huì)隨著瀏覽器的滾動(dòng)而變化,IE6不支持)、relative(相對(duì)于元素默認(rèn)位置的定位)。若要通過代碼修改元素的坐標(biāo)則一般使用absolute,然后修改元素的top、left兩個(gè)樣式值。
-------------------------------------------------------------------------------
form對(duì)象!
1.方法submit()提交表單,但是不會(huì)觸發(fā)onsubmit事件。如果按鈕不是submit類型的想要實(shí)現(xiàn)同樣的效果可先取得form的ID然后再調(diào)用它的submit()方法。
2.點(diǎn)擊submit后form的onsubmit事件被觸發(fā),在onsubmit中可以進(jìn)行數(shù)據(jù)校驗(yàn),數(shù)據(jù)有問題則返回false即可阻止form提交。。記住,這是個(gè)很有用的方法,咱們要校驗(yàn)數(shù)據(jù)來著。
3.具體的一個(gè)應(yīng)用場(chǎng)景是,下拉選擇框,用戶選擇后即提交,無須點(diǎn)擊按鈕,只需onchange方法調(diào)用form的submit方法即可實(shí)現(xiàn),并無神奇之處的。
4.面試時(shí)會(huì)被問具體瀏覽器之間的差異,及怎么解決,請(qǐng)觀看錄像60.。。JQuery能解決不同瀏覽器上DOM的不同。
5.JS正則表達(dá)式。JS中創(chuàng)建正則表達(dá)式類的方法:var regex=new RegExp("\\d{5}")或者var regex=/\d{5}/。。。/表達(dá)式/是JS中專門為簡(jiǎn)化正則表達(dá)式編寫而提供的語法。寫在里面的表達(dá)式不用管轉(zhuǎn)義符。
RegExp對(duì)象的方法:test(str)判斷是否匹配表達(dá)式。相當(dāng)于IsMatch。
javascript——》DOM就是C#——》.NET FRAMEWORK
DOM也像winform一樣,通過事件,屬性,方法編程。
CSS+javascript+DOM=DHTML
一,window對(duì)象,代表當(dāng)前瀏覽器窗口,使用window對(duì)象的屬性,方法的時(shí)候可以省略window
1.confirm方法,顯示“確定”,“取消”對(duì)話框,按下“確定”返回true,否則返回false
2.navigate方法,重新導(dǎo)航到指定的地址。
3.setInterval,每個(gè)一段時(shí)間執(zhí)行指定的代碼,第一個(gè)參數(shù)為代碼的字符串,第二個(gè)參數(shù)為間隔時(shí)間(單位毫秒),返回值為定時(shí)器的標(biāo)識(shí)。<input type="button" value="滾動(dòng)" οnclick="setInterval('scroll()',500)"/>每調(diào)用一次setInterval都會(huì)產(chǎn)生一個(gè)新的定時(shí)器,并且舊的不會(huì)停止,所以看起來好像“越跑越快”
4.clearInterval取消setInterval的定時(shí)執(zhí)行,相當(dāng)于timer中的enabled=false。因?yàn)榭梢栽O(shè)定多個(gè)定時(shí)器,所以取消時(shí)要指定清除那個(gè)定時(shí)器的標(biāo)識(shí),即setInterval的返回值。
5.setTimeout,超時(shí)。也是定時(shí)執(zhí)行,但只執(zhí)行一次。對(duì)應(yīng)clearTimeout
二,body,document對(duì)象的事件
1.onload,網(wǎng)頁(yè)加載完畢時(shí)觸發(fā),瀏覽器一邊下載文檔一邊解析執(zhí)行,可能會(huì)出現(xiàn)javascript執(zhí)行時(shí)需要操作某個(gè)元素這個(gè)元素還沒加載,若這樣就要把操作的代碼放到onload事件中,或者把javascript放在元素之后,比如在頁(yè)面打開時(shí)就更改一個(gè)還未沒創(chuàng)建的按鈕的屬性,可這么做<body οnlοad="btn.value='ok';"/>
2.onunload,網(wǎng)頁(yè)關(guān)閉(或者離開)后觸發(fā)
3.onbeforeunload,在網(wǎng)頁(yè)準(zhǔn)備關(guān)閉(或者離開)后觸發(fā)。在事件中為“window.event.returnValue賦值(即設(shè)置要顯示的警告消息),這樣窗口離開(比如前進(jìn),后退,關(guān)閉)就會(huì)彈出確認(rèn)消息<body οnbefοreunlοad="window.event.returnValue='真的要放棄嗎?';"/>
4.其他事件。onclick,ondbclick,onkeydown,onkeypress,onkeyup,onmousedown,onmousemove,onmouseout,onmouseover,onmouseup.
三,window對(duì)象屬性。
1.window.location.href。獲取或設(shè)置地址。
2.window.event。用來獲得發(fā)生事件時(shí)的信息,事件不局限于window對(duì)象的時(shí)間,類似于winform中的eventArgs e。
altKey屬性,bool類型,類似還有ctrlKey,shiftKey.
clientX,clientY,客戶區(qū)的坐標(biāo);screenX,screenY,屏幕上的坐標(biāo);offsetX,offsetY鼠標(biāo)相對(duì)于事件源的坐標(biāo)
returnValue屬性,設(shè)置為false會(huì)取消默認(rèn)事件的處理。在超鏈接的onclick里面禁止訪問href的頁(yè)面;在表單校驗(yàn)的時(shí)候禁止提交表單到服務(wù)器;可考慮用這個(gè),如:<a href="http://www.baidu.com" οnclick="alert('禁止訪問');window.returnValue=false;">百度</a>
srcElement,獲得事件源對(duì)象。
keyCode發(fā)生事件時(shí)的按鍵值。
button,發(fā)生事件時(shí)鼠標(biāo)按鍵,1為左鍵,2為右鍵,3為左右鍵同時(shí)按。
3.screen對(duì)象,屏幕的信息;.height;.width
4.clipboardData對(duì)象,對(duì)粘貼板的操作。clearData("Text")清空粘貼板;getData("Text")讀取粘貼板的值,返回值為粘貼板中的內(nèi)容;setData("Text",val)設(shè)置粘貼板的值。參數(shù)永遠(yuǎn)是Text。練習(xí):可以復(fù)制地址給好友。
當(dāng)復(fù)制的時(shí)候body的oncopy方法被觸發(fā),直接return false就是禁止復(fù)制。<body οncοpy="alert('禁止復(fù)制!');return false;">
很多元素也有oncopy,onpaste事件。練習(xí):禁止粘貼賬號(hào)。
在網(wǎng)站中復(fù)制文章的時(shí)候?yàn)榱朔乐箍截慄h不添加文章來源,自動(dòng)在復(fù)制的內(nèi)容后添加版權(quán)聲明。
function modifyClipboard(){
clipboardData.setData('Text',clipboardData.getData('Text')+'本文來自。。。轉(zhuǎn)載請(qǐng)注明出處'+location.href);
}
οncοpy="setTimeout('modifyClipborad()',100)",不能在oncopy中執(zhí)行對(duì)粘貼板的操作,因此設(shè)定定時(shí)器,0.1秒后執(zhí)行,這樣就不再oncopy的執(zhí)行調(diào)用棧上了。
5.window.history.back()后退;window.history.forward()前進(jìn)。也可以用window.history.go(-1),window.history.go(1)前進(jìn)
6.window對(duì)象的document屬性,最復(fù)雜屬性之一。
document.write方法,向頁(yè)面中寫入內(nèi)容。。在onclick等事件中寫的代碼會(huì)沖掉頁(yè)面的內(nèi)容,只有在頁(yè)面加載過程中write才會(huì)與原有內(nèi)容融合在一起。write經(jīng)常在廣告代碼,整合資源代碼中被使用。
document.getElementByIdx_x_x_x方法(非常常用),根據(jù)元素的id獲得對(duì)象,網(wǎng)頁(yè)中id不能重復(fù),當(dāng)然你也可以直接通過元素的id來引用元素,但是有有效范圍,因此不建議直接通過id操作元素而是通過getElementById.
document.getElementByName,根據(jù)元素的name獲得對(duì)象,由于頁(yè)面中元素的name可以重復(fù),因此此方法返回值是對(duì)象數(shù)組。比如獲得radio的數(shù)組。
documen.getElementByTagName,獲得指定標(biāo)簽名稱的元素?cái)?shù)組。
練習(xí):點(diǎn)擊一個(gè)按鈕,被點(diǎn)擊的按鈕顯示“嗚嗚”,其他顯示“哈哈”
十秒鐘后協(xié)議文本框下的注冊(cè)按鈕才能被點(diǎn)擊,時(shí)鐘倒數(shù)。(btn.disabled=true)
加法計(jì)算器,利用控件的ID來獲得值相加注意用parsteInt轉(zhuǎn)換;美女時(shí)鐘、img控件加載圖片,用時(shí)間來改變組裝圖片的名字。
四,DOM的動(dòng)態(tài)創(chuàng)建。
1. 當(dāng)我們想動(dòng)態(tài)創(chuàng)建DOM對(duì)象時(shí)怎么辦呢?也許你想到了document.write,但是這個(gè)方法只能在頁(yè)面加載過程中動(dòng)態(tài)創(chuàng)建
可以調(diào)用document_createElement_x_x_x方法來創(chuàng)建具有指定標(biāo)簽的DOM對(duì)象,然后通過調(diào)用元素的a方法將新創(chuàng)建元素添加到相應(yīng)元素下(如div)。
2.幾乎所有的DOM元素都有innerText,innerHTML屬性(注意大小寫),分別是元素標(biāo)簽內(nèi)內(nèi)容的文本表示形式(標(biāo)簽內(nèi)部的文本,如<a>文本</a>)和HTML源代碼(標(biāo)簽內(nèi)部的代碼,如<div id='...'>innerHTML</div>),這兩個(gè)屬性是可讀可寫的。所以可用其動(dòng)態(tài)修改元素。。動(dòng)態(tài)產(chǎn)生的元素,瀏覽器中查看源代碼是看不到的,可以通過DebugBar——>DOM——>文檔——>HTML
五,其他。
1.冒泡事件。
2.事件中的this,我們之前有在事件響應(yīng)函數(shù)中用event.srcElement,現(xiàn)在我們還可以用this,this表示發(fā)生事件的控件。但是只有在事件響應(yīng)函數(shù)中才能使用this獲得發(fā)生事件的控件,在事件響應(yīng)函數(shù)調(diào)用的函數(shù)中是不能使用的,非要用的話要將this傳遞給函數(shù)或者使用event.srcElement
3.修改元素樣式不是設(shè)置class屬性,而是className屬性。
修改元素的樣式不能this.style="background-color:Red".單獨(dú)修改樣式的屬性使用style.屬性名。注意在CSS中屬性名在javascript中操作的時(shí)候?qū)傩悦赡懿灰粯?#xff0c;主要集中在哪些屬性名中含有-的屬性,因?yàn)閖avascript中-是不能做屬性,類名的。如CSS:background-color而javascript:style.background
4.控制層的顯示。修改style.display。=‘none’不顯示,=‘’顯示。
鼠標(biāo)進(jìn)入控件的事件是onmouseover,離開的事件是onmouseout,移動(dòng)的事件是onmousemove。
5.IE中body的事件范圍。在body上添加onclick、onmouseover、等事件響應(yīng)那么如果頁(yè)面沒有滿,則body中最后一個(gè)元素以下(但是橫向就不受限制)的部分是無法響應(yīng)事件的。必須得使用代碼在document上監(jiān)聽那些事件,比如document.οnmοuseοver=方法。。。
6.通過DOM讀取元素的top、left、width、height等取到的值是像10PX這樣的字符串,為這些屬性設(shè)值得時(shí)候IE可以是80,90這樣的數(shù)字,但FF必須是加PX,%等這樣的字符串形式,為了兼容統(tǒng)一我們要用字符串形式。
若要用DOM修改(比如自動(dòng)加寬)元素的大小要首先要取出元素的寬度然后用parseInt將寬度轉(zhuǎn)換為數(shù)字,然后再加上PX賦值回去。PS:不像C#中那樣,在JS中parseInt是盡可能解析出數(shù)字的,比如50fhdhjh它也能解析出50來。
7.層的定位操作。元素的position樣式值:static(無定位,顯示在默認(rèn)位置)、absolute(絕對(duì)定位)、fixed(相對(duì)于窗口的固定定位,位置不會(huì)隨著瀏覽器的滾動(dòng)而變化,IE6不支持)、relative(相對(duì)于元素默認(rèn)位置的定位)。若要通過代碼修改元素的坐標(biāo)則一般使用absolute,然后修改元素的top、left兩個(gè)樣式值。
-------------------------------------------------------------------------------
form對(duì)象!
1.方法submit()提交表單,但是不會(huì)觸發(fā)onsubmit事件。如果按鈕不是submit類型的想要實(shí)現(xiàn)同樣的效果可先取得form的ID然后再調(diào)用它的submit()方法。
2.點(diǎn)擊submit后form的onsubmit事件被觸發(fā),在onsubmit中可以進(jìn)行數(shù)據(jù)校驗(yàn),數(shù)據(jù)有問題則返回false即可阻止form提交。。記住,這是個(gè)很有用的方法,咱們要校驗(yàn)數(shù)據(jù)來著。
3.具體的一個(gè)應(yīng)用場(chǎng)景是,下拉選擇框,用戶選擇后即提交,無須點(diǎn)擊按鈕,只需onchange方法調(diào)用form的submit方法即可實(shí)現(xiàn),并無神奇之處的。
4.面試時(shí)會(huì)被問具體瀏覽器之間的差異,及怎么解決,請(qǐng)觀看錄像60.。。JQuery能解決不同瀏覽器上DOM的不同。
5.JS正則表達(dá)式。JS中創(chuàng)建正則表達(dá)式類的方法:var regex=new RegExp("\\d{5}")或者var regex=/\d{5}/。。。/表達(dá)式/是JS中專門為簡(jiǎn)化正則表達(dá)式編寫而提供的語法。寫在里面的表達(dá)式不用管轉(zhuǎn)義符。
RegExp對(duì)象的方法:test(str)判斷是否匹配表達(dá)式。相當(dāng)于IsMatch。
轉(zhuǎn)載于:https://www.cnblogs.com/dfyg-xiaoxiao/p/7213780.html
總結(jié)
- 上一篇: 浏览器内核信息整理
- 下一篇: HDU 1754 I Hate It(线