摘要:發(fā)布后不久,微軟就在其中加入了名為的實(shí)現(xiàn)命名為是為了避開與有關(guān)的授權(quán)問題。以現(xiàn)在的眼光來看,微軟年月為進(jìn)入瀏覽器領(lǐng)域而實(shí)施的這個(gè)重大舉措,是導(dǎo)致日后蒙羞的一個(gè)標(biāo)志性時(shí)間。微軟推出其實(shí)現(xiàn)意味著有了兩個(gè)不同的版本中的中的。
JavaScript簡(jiǎn)介
前言:最近在細(xì)讀Javascript高級(jí)程序設(shè)計(jì),對(duì)于我而言,中文版,書中很多地方一筆帶過,所以用自己所理解的,嘗試細(xì)致解讀下。如有紕漏或錯(cuò)誤,會(huì)非常感謝您的指出。文中絕大部分內(nèi)容引用自《JavaScript高級(jí)程序設(shè)計(jì)第三版》。
JavaScript誕生于1995年。當(dāng)時(shí),它的主要目的是處理以前由有服務(wù)器語言(如Perl)負(fù)責(zé)的一些輸入驗(yàn)證操作。
在JavaScript問世之前,必須把表單數(shù)據(jù)發(fā)送到服務(wù)器端才能確定用戶是否沒有填寫某個(gè)必填項(xiàng),是否輸入了無效的值。
Netscape Navigator希望通過JavaScript來解決這個(gè)問題。在人們普遍使用電話撥號(hào)上網(wǎng)的年代,能夠在客戶端完成一些基本的驗(yàn)證任務(wù)絕對(duì)是令人興奮的。畢竟,撥號(hào)上網(wǎng)的速度之慢,導(dǎo)致了與服務(wù)器的每一次數(shù)據(jù)交換都成了對(duì)人們耐心的一次考驗(yàn)。
自此以后,JavaScript逐漸成為世面上常見瀏覽器必備的一項(xiàng)特色功能。如今,JavaScript的用途早不再局限于簡(jiǎn)單的數(shù)據(jù)驗(yàn)證,而是具備了與瀏覽器窗口及其內(nèi)容等幾乎所有方面交互的能力。
今天的JavaScript已經(jīng)成為了一門功能全面的編程語言,能夠處理復(fù)雜的計(jì)算和交互,擁有了閉包、匿名(lambda,拉姆達(dá))函數(shù),設(shè)置元編程等特性。
作為Web的一個(gè)重要組成部分,JavaScript的重要性是不言而喻的,就連手機(jī)瀏覽器,甚至那些專門為殘障人士設(shè)計(jì)的非常規(guī)瀏覽器都支持它。
當(dāng)然,微軟的例子更為典型。雖然有自己的客戶端腳本語言VBScript,但微軟仍然在Internet Explorer的早起版本中加入了自己的JavaScript實(shí)現(xiàn)。
JavaScript從一個(gè)簡(jiǎn)單的輸入驗(yàn)證器發(fā)展成為一門強(qiáng)大的編程語言,完全出乎人們的意料。
它既是一門非常簡(jiǎn)單的語言,又是一門非常復(fù)雜的語言。
說它簡(jiǎn)單,是因?yàn)閷W(xué)會(huì)使用它只需片刻功夫;而說它復(fù)雜,是因?yàn)橐嬲莆账枰獢?shù)年時(shí)間。要想全面理解和掌握J(rèn)avaScript,關(guān)鍵在于弄清楚它的本質(zhì)、歷史和局限性。
JavaScript簡(jiǎn)史在Web日益流行的同時(shí),人們對(duì)客戶端腳本語言的需求也越來越強(qiáng)烈。那個(gè)時(shí)候,絕大多數(shù)因特網(wǎng)用戶都使用速度僅為28.8bit/s的“貓”(調(diào)制解調(diào)器)上網(wǎng),但網(wǎng)頁的大小和復(fù)雜性卻不斷增加。
為完成簡(jiǎn)單的表單驗(yàn)證而頻繁地獄服務(wù)器交換數(shù)據(jù)只會(huì)加重用戶的負(fù)擔(dān)。想象一下:用戶填寫完一個(gè)表單,單擊“提交”按鈕,然后等待30秒鐘,最終服務(wù)器返回消息說有一個(gè)必填字段沒有填好.....當(dāng)時(shí)走在技術(shù)革新最前沿的Netscape公司,決定著手可開發(fā)一種客戶端語言,用來處理這種簡(jiǎn)單的驗(yàn)證。
當(dāng)時(shí)就職于Netscape公司的Brendan Eich,開始著手為計(jì)劃于1995年2月發(fā)布的Netscape Navigator 2 開發(fā)一種名為 LiveScript的腳本語言——該語言將同時(shí)在瀏覽器和服務(wù)器中使用(它在服務(wù)器上的名字叫LiveWire)。為了趕在發(fā)布日期前完成LiveScript的開發(fā),Netscape與Sun公司建立了一個(gè)開發(fā)聯(lián)盟。在Netscape Navigator 2正是發(fā)布前夕,Netscape為了搭上媒體熱炒Java的順風(fēng)車,臨時(shí)把LiveScript改名為JavaScript。
由于JavaScript 1.0獲得了巨大成功,NetScape隨即在Netscape Navigator 3中又發(fā)布了JavaScript 1.1。Web雖然羽翼未豐,但用戶關(guān)注度卻屢創(chuàng)新高。在這樣的背景下,Netscape把自己定位為市場(chǎng)領(lǐng)袖型公司。與此同時(shí),微軟決定與Navigator競(jìng)爭(zhēng)的自家產(chǎn)品Internet Explorer瀏覽器投入更多資源。Navigator 3 發(fā)布后不久,微軟就在其Internet Expolorer 3中加入了名為JScript的JavaScript實(shí)現(xiàn)(命名為JScript是為了避開與Netscape有關(guān)的授權(quán)問題)。以現(xiàn)在的眼光來看,微軟1996年8月為進(jìn)入Web瀏覽器領(lǐng)域而實(shí)施的這個(gè)重大舉措,是導(dǎo)致Netscape日后蒙羞的一個(gè)標(biāo)志性時(shí)間。這也標(biāo)志著JavaScript作為一門語言,其開發(fā)向前邁進(jìn)了一大步。
微軟推出其JavaScript實(shí)現(xiàn)意味著有了兩個(gè)不同的JavaScript版本:Netscape Navigator中的JavaScript、Internet Explorer中的JScript。
與C及其他編程語言不同,當(dāng)時(shí)還沒有標(biāo)準(zhǔn)規(guī)定JavaScript的語法和特性,兩個(gè)不同版本并存的局面已經(jīng)完全暴露了這個(gè)問題。隨著頁面擔(dān)心的日益加劇,JavaScript的標(biāo)準(zhǔn)化問題被提上了議事日程。
1997年,以JavaScript 1.1 為藍(lán)本的建議被提交給了歐洲計(jì)算機(jī)制造商協(xié)會(huì)(ECMA,European Computer Manufacturers Association)。該協(xié)會(huì)指定39號(hào)技術(shù)委員會(huì)(TC39,Technical Committee #39)負(fù)責(zé)“標(biāo)準(zhǔn)化一種通用、跨平臺(tái)、供應(yīng)商中立的腳本語言的語法和語義”。TC39由來自Netscape、Sun、微軟、Borland及其他關(guān)注腳本語言發(fā)展的公司的程序員組成,他們經(jīng)過數(shù)月的努力完成了ECMA-262——定義一種名為ECMAScript的新腳本語言的標(biāo)準(zhǔn)。
第二年,ISO/IEC(International Organization for Standardization and International Electrotechnical Commission,國(guó)際標(biāo)準(zhǔn)化組織和國(guó)際電工委員會(huì))也采用了ECMAScript作為標(biāo)準(zhǔn)(即ISO/IEC-16262)。自此之后,瀏覽器開發(fā)上就開始致力于將ECMAScript作為各自JavaScript實(shí)現(xiàn)的基礎(chǔ),也在不同程度上取得了成功。
JavaScript的實(shí)現(xiàn)雖然JavaScript和ECMAScript通常都被人們用來表達(dá)相同的含義,但JavaScript的含義卻比ECMA-262規(guī)定的要多得多。
一個(gè)完整的JavaScript實(shí)現(xiàn)應(yīng)該由下列三個(gè)不同的部分組成。
核心(ECMAScript)
文檔對(duì)象模型(DOM)
瀏覽器對(duì)象模型 (BOM)
ECMAScript由ECMA-262定義的ECMAScript與Web瀏覽器沒有依賴關(guān)系。實(shí)際上,這門語言本身并不包含輸入和輸出定義。ECMAScript-262定義的只是這門語言的基礎(chǔ),而在此基礎(chǔ)之上可以構(gòu)建更完善的腳本語言。
我們常見的Web瀏覽器只是ECMAScript實(shí)現(xiàn)可能的宿主環(huán)境之一。宿主環(huán)境不僅提供基本的ECMAScript實(shí)現(xiàn),同時(shí)也會(huì)提供該語言的擴(kuò)展,以便語言與環(huán)境之間對(duì)接交互。而這些擴(kuò)展——如DOM,則利用ECMAScript的核心類型和語法提供更多更具體的功能,以便實(shí)現(xiàn)針對(duì)環(huán)境的操作。其他宿主環(huán)境包括Node(一種服務(wù)端JavaScript平臺(tái))和Adobe Flash。
既然ECMA-262標(biāo)準(zhǔn)沒有參照Web瀏覽器,那它規(guī)定了些什么內(nèi)容?大致來說,它規(guī)定了這門語言的下列組成部分。
語法
語句
對(duì)象
類型
關(guān)鍵字
保留字
操作符
ECMAScript就是對(duì)實(shí)現(xiàn)該標(biāo)準(zhǔn)規(guī)定的各個(gè)方面內(nèi)容的語言的描述。
JavaScript實(shí)現(xiàn)了ECMAScript,Adobe ActionScript同樣也實(shí)現(xiàn)了ECMAScript。
ECMAScript的版本
這里只說下第五版。
ECMAScript 3.1成為 ECMAScript-262第五版,并于2009年12月3日正式發(fā)布。第5版力求澄清第3版中已知的歧義并增添了新的功能。新功能包括原生JSON對(duì)象(用于解析和序列化JSON數(shù)據(jù))、繼承的方法和高級(jí)屬性定義,另外還包含一種嚴(yán)格模式,對(duì)ECMAScript引擎解釋和執(zhí)行代碼進(jìn)行了補(bǔ)充說明。
什么是ECMAScript兼容
ECMA-262給出了ECMAScript兼容的定義。要想成為ECMAScript的實(shí)現(xiàn),則該實(shí)現(xiàn)必須做到:
支持ECMA-262描述的所有“類型、值、對(duì)象、屬性、函數(shù)以及程序句法和語義。”
支持Unicode字符標(biāo)準(zhǔn)
此外,兼容的實(shí)現(xiàn)還可以進(jìn)行下列擴(kuò)展。
添加ECMA-262沒有描述的“更多類型、值、屬性和函數(shù)”。ECMA-262所說的這些新增特性,主要是指該標(biāo)準(zhǔn)中沒有規(guī)定的新對(duì)象和對(duì)象的新屬性。
支持ECMA-262沒有定義的“程序和正則表達(dá)式語法”。(也就是說,可以修改和擴(kuò)展內(nèi)置的正則表達(dá)式語法。)
Web瀏覽器對(duì)ECMAScript的支持
到了2008年,五大主流Web瀏覽器(IE、Firefox、Safari、Chrome和Opera)全部做到了與ECMAScript-262兼容。IE8是第一個(gè)著手實(shí)現(xiàn)ECMAScript-262第5版的瀏覽器,并在IE9中提供了完整的支持。Firefox 4也緊隨其后做到兼容。
文檔對(duì)象模型(DOM)文檔對(duì)象模型(DOM,Document Object Model)是針對(duì)XML但經(jīng)過擴(kuò)展用于HTML的應(yīng)用程序編程接口(API,Application Programming Interface)。DOM把整個(gè)頁面映射為一個(gè)多層節(jié)點(diǎn)結(jié)構(gòu)。HTML或XML頁面中的每個(gè)組成部分都是某種類型的節(jié)點(diǎn),這些節(jié)點(diǎn)又包含不同類型的數(shù)據(jù)。
Sample Page hello world
通過DOM創(chuàng)建的這個(gè)表示文檔的樹形圖,開發(fā)人員獲得了控制頁面內(nèi)容和結(jié)構(gòu)的主動(dòng)權(quán)。借助DOM提供的API,開發(fā)人員可以輕松自如地刪除、添加、替換或修改任何節(jié)點(diǎn)。
為什么要使用DOM
在IE4和Netscape Navigator4分別支持的不同形式的DHTML(Dynamic HTML)基礎(chǔ)上,開發(fā)人員首次無需重新加載網(wǎng)頁,就可以修改其外觀和內(nèi)容了。然而,DHTML在給Web技術(shù)發(fā)展帶來巨大進(jìn)步的同時(shí),也帶來了巨大的問題。由于Netscape和微軟在開發(fā)DHTML方面各執(zhí)己見,過去那個(gè)只編寫一個(gè)HTML頁面就能夠在任何瀏覽器中運(yùn)行的時(shí)代結(jié)束了。
對(duì)開發(fā)人員來說,如果想繼續(xù)保持Web跨平臺(tái)的天性,就必須額外多做些工作。而人們真正擔(dān)心的是,如果不對(duì)Netscape和微軟加以控制,Web開發(fā)領(lǐng)域就會(huì)出現(xiàn)技術(shù)上兩強(qiáng)割據(jù),瀏覽器互不兼容的局面。
此時(shí),負(fù)責(zé)制定Web通信標(biāo)準(zhǔn)的W3C(World Wide Web Consortium,萬維網(wǎng)聯(lián)盟)開始著手規(guī)劃DOM。
DOM級(jí)別
DOM1級(jí)(DOM Level1)于1998年10月成為W3C的推薦標(biāo)準(zhǔn)。DOM1級(jí)由兩個(gè)模塊組成:DOM核心(DOM Core)和DOM HTML。
其中,DOM核心規(guī)定的是如何映射基于XML的文檔結(jié)構(gòu),以便簡(jiǎn)化對(duì)文檔中任意部分的訪問和操作。
DOM HTML模塊則在DOM核心的基礎(chǔ)上加以擴(kuò)展,添加了針對(duì)HTML的對(duì)象和方法。
DOM并不只是針對(duì)JavaScript的,很多別的語言月都實(shí)現(xiàn)了DOM。不過,在Web瀏覽器中,基于ECMAScript實(shí)現(xiàn)的DOM的確已經(jīng)成為JavaScript這門語言的一個(gè)重要組成部分。
如果說DOM1級(jí)的目標(biāo)主要是映射文檔的結(jié)構(gòu),那么DOM2級(jí)的目標(biāo)就要寬泛多了。DOM2級(jí)在原來DOM的基礎(chǔ)上又?jǐn)U展了鼠標(biāo)和用戶界面時(shí)間、范圍、遍歷(迭代DOM文檔的方法)等細(xì)分模塊,而且通過對(duì)象接口增加了對(duì)CSS(Cascading Style Sheets,層疊樣式表)的支持。DOM1級(jí)中的DOM核心模塊也經(jīng)過擴(kuò)展開始支持XML命名空間。
DOM2級(jí)引入了下列新模塊,也給出了眾多新類型和新接口的定義。
DOM視圖(DOM Views):定義了跟蹤不同文檔(應(yīng)用CSS之前和之后的文檔)視圖的接口;
DOM事件 (DOM Events):定義了事件和事件處理的接口;
DOM樣式(DOM Style): 定義了基于CSS為元素應(yīng)用樣式的接口;
DOM遍歷和范圍(DOM Tranversal and Range):定義了遍歷和操作文檔數(shù)的接口。
DOM3級(jí)則進(jìn)一步擴(kuò)展了DOM,引入了以統(tǒng)一方式加載和保存文檔的方法——在DOM加載和保存(DOM Load and Save)模塊中定義;
新增了驗(yàn)證文檔的方法——在DOM驗(yàn)證(DOM Validation)模塊中定義。DOM3級(jí)也對(duì)DOM核心進(jìn)行了擴(kuò)展,開始支持XML 1.0規(guī)范,涉及XML Infoset、XPath和XML Base。
在閱讀相關(guān)參考文檔的時(shí)候,可能會(huì)看到DOM0級(jí)(DOM Level 0)的字眼。實(shí)際上,DOM0級(jí)標(biāo)準(zhǔn)是不存在的;所謂DOM0級(jí)只是DOM歷史坐標(biāo)中的一個(gè)參照點(diǎn)而已。具體來說,DOM0級(jí)指的是IE 4和Natscape Navigator 最初支持的DHTML。
其他DOM標(biāo)準(zhǔn)
除了DOM核心和DOM HTML接口之外,另外幾種語言還發(fā)布了只針對(duì)自己的DOM標(biāo)準(zhǔn)。下面列出的語言都是基于XML的,每種語言的DOM標(biāo)準(zhǔn)都添加了與特定語言相關(guān)的新方法和新街口:
SVG(Scalable Vector Graphic,可伸縮矢量圖) 1.0;
MathML(Mathematrical Markup Language,數(shù)學(xué)標(biāo)記語言) 1.0;
SMIL(Synchronized Multimedia Intgration Language,同步多媒體集成語言)。
還有一些語言也開發(fā)了自己的DOM實(shí)現(xiàn),例如Mozilla的XUL(XML User Interfacce Language,XML用戶界面語言)。但是,只有上面列出的幾種語言是W3C的推薦標(biāo)準(zhǔn)。
Web瀏覽器對(duì)DOM的支持
在DOM標(biāo)準(zhǔn)出現(xiàn)了一段時(shí)間后,Web瀏覽器才開始實(shí)現(xiàn)它。微軟IE5首次嘗試實(shí)現(xiàn)DOM,知道IE5.5才算是真正支持DOM1級(jí)。在隨后的IE6和IE7中,微軟都沒有引入新的DOM功能,而到了IE8才對(duì)以前DOM實(shí)現(xiàn)中的bug進(jìn)行了修復(fù)。
Netscape直到Netscape6(Mozilla 0.60)才開始支持DOM。在Netscape7之后,Mozilla把開發(fā)中心轉(zhuǎn)向了Firefox瀏覽器。Firefox 3完成支持DOM1級(jí),幾乎完全支持DOM2級(jí),甚至還支持DOM3級(jí)的一部分。(Mozilla開發(fā)團(tuán)隊(duì)的目標(biāo)是構(gòu)建與標(biāo)準(zhǔn)100%兼容的瀏覽器,而他們的努力也得到了回報(bào)。)
支持DOM已經(jīng)成為瀏覽器開發(fā)商的首要目標(biāo),主流瀏覽器每次發(fā)布新版本都會(huì)改進(jìn)對(duì)DOM的支持。
瀏覽器對(duì)象模型(BOM)IE3和Netscape Navigator 3有一個(gè)共同的特色,那就是支持可以訪問和草祖宗瀏覽器窗口的瀏覽器對(duì)象模型(BOM,Broswer Object Model)。開發(fā)人員使用BOM可以可控制瀏覽器顯示的頁面以外的部分。而BOM真正與眾不同的地方(也是經(jīng)常會(huì)導(dǎo)致問題的地方),還是它作為JavaScript實(shí)現(xiàn)的一部分但卻沒有相關(guān)標(biāo)準(zhǔn)。這個(gè)問題在HTML5中得到了解決,HTML5致力于把很多BOM功能寫入正式規(guī)范。
HTML5發(fā)布后,很多關(guān)于BOM的困惑煙消云散。
從根本上講,BOM只處理瀏覽器窗口和框架,但人們習(xí)慣上也把所有針對(duì)瀏覽器的JavaScript擴(kuò)展算作BOM的一部分。
彈出新瀏覽器窗口的功能;
移動(dòng)、縮放和關(guān)閉瀏覽器窗口的功能;
提供瀏覽器詳細(xì)信息的navigator對(duì)象;
提供瀏覽器加載頁面的詳細(xì)信息的location對(duì)象;
提供用戶顯示器分辨率詳細(xì)信息的screen對(duì)象;
對(duì)cookies的支持;
像XMLHttpRequest和IE的ActiveXObject這樣的自定義對(duì)象。
由于沒有BOM標(biāo)準(zhǔn)可以遵循,因此每個(gè)瀏覽器都有自己的實(shí)現(xiàn)。
雖然也存在一些事實(shí)標(biāo)準(zhǔn),例如、要有window對(duì)象和navigator對(duì)象等,但每個(gè)瀏覽器都會(huì)為這兩個(gè)對(duì)象乃至其他對(duì)象定義自己的屬性和方法。
JavaScript是一種專為與網(wǎng)頁交互而設(shè)計(jì)的腳本語言,由下列三個(gè)不同的部分組成:
ECMAScript,由ECMA-262定義,提供核心語言功能;
文檔對(duì)象模型(DOM),提供訪問和操作網(wǎng)頁內(nèi)容的方法和接口;
瀏覽器對(duì)象模型(BOM),提供與瀏覽器交互的方法和接口。
JavaScript的這三個(gè)組成部分,在當(dāng)前五個(gè)主流瀏覽器(IE,FF,Chrome, Safari和Opera)中都得到了不同程度的支持。
對(duì)已經(jīng)正式納入HTML5標(biāo)準(zhǔn)的BOM來說,盡管各瀏覽器都實(shí)現(xiàn)了某些眾所周知的共同特性,但其他特性還是因?yàn)g覽器而異。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/108635.html
摘要:資源不斷更新中。。。主頁前端工具簡(jiǎn)介雖然不是第一個(gè)任務(wù)執(zhí)行工具,它卻很快成為了最受歡迎的。官方網(wǎng)站網(wǎng)易框架是網(wǎng)易推出的開源前端框架,提供了豐富代碼庫和插件,可以極大的幫助開發(fā)人員提高開發(fā)效率。 資源不斷更新中。。。 動(dòng)畫庫1.Animate.css說明:一個(gè)簡(jiǎn)單易用的跨瀏覽器CSS動(dòng)畫庫。GitHub主頁: https://github.com/daneden/an... 2.CSSh...
摘要:資源不斷更新中。。。主頁前端工具簡(jiǎn)介雖然不是第一個(gè)任務(wù)執(zhí)行工具,它卻很快成為了最受歡迎的。官方網(wǎng)站網(wǎng)易框架是網(wǎng)易推出的開源前端框架,提供了豐富代碼庫和插件,可以極大的幫助開發(fā)人員提高開發(fā)效率。 資源不斷更新中。。。 動(dòng)畫庫1.Animate.css說明:一個(gè)簡(jiǎn)單易用的跨瀏覽器CSS動(dòng)畫庫。GitHub主頁: https://github.com/daneden/an... 2.CSSh...
摘要:誕生于年,它的主要目的是處理以前由服務(wù)器端語言負(fù)責(zé)的一些輸入驗(yàn)證操作。的不同版本又稱為版次,以第版表示。目前最新的是簡(jiǎn)稱文檔對(duì)象模型文檔對(duì)象模型,是針對(duì)但經(jīng)過拓展用于的應(yīng)用程序接口,。元素當(dāng)瀏覽器不支持或被禁用時(shí),顯示里面的內(nèi)容。 JavaScript誕生于1995年,它的主要目的是處理以前由服務(wù)器端語言負(fù)責(zé)的一些輸入驗(yàn)證操作。 完整的JavaScript實(shí)現(xiàn)由下列三個(gè)不同的部分組成:...
摘要:簡(jiǎn)介簡(jiǎn)史誕生于年,當(dāng)時(shí)主要負(fù)責(zé)表單的輸入驗(yàn)證。實(shí)現(xiàn)一個(gè)完整的由三部分組成核心文檔對(duì)象模型瀏覽器對(duì)象模型就是對(duì)實(shí)現(xiàn)該標(biāo)準(zhǔn)規(guī)定的各個(gè)方面內(nèi)容的語言的描述。把整個(gè)頁面映射為一個(gè)多層節(jié)點(diǎn)結(jié)構(gòu)。由萬維網(wǎng)聯(lián)盟規(guī)劃。主要目標(biāo)是映射文檔的結(jié)構(gòu)。 JavaScript簡(jiǎn)介 JavaScript簡(jiǎn)史 JavaScript誕生于1995年,當(dāng)時(shí)主要負(fù)責(zé)表單的輸入驗(yàn)證。 如果沒有表單驗(yàn)證的功能,填入信息之...
閱讀 2076·2021-08-21 14:09
閱讀 540·2019-08-30 15:44
閱讀 2178·2019-08-29 16:32
閱讀 1440·2019-08-29 15:36
閱讀 3562·2019-08-29 12:43
閱讀 2835·2019-08-29 11:14
閱讀 486·2019-08-28 18:26
閱讀 2302·2019-08-26 13:57