国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      針對web兼容性和互操作性的代碼顧問的制作方法

      文檔序號:6363659閱讀:163來源:國知局
      專利名稱:針對web兼容性和互操作性的代碼顧問的制作方法
      針對web兼容性和互操作性的代碼顧問
      背景技術
      以前,當改變web平臺時,開發(fā)者不易于識別在其網(wǎng)站上的網(wǎng)頁在利用新web平臺時是否會遇到問題。因此,開發(fā)者不得不讀取關于新平臺的文檔并手動地跟蹤代碼變化以評估兼容性和互操作性問題??商鎿Q地,開發(fā)者不得不運行針對源代碼的表達以執(zhí)行源代碼分析?,F(xiàn)有工具通常為靜態(tài)的且常常并不提供對于兼容性問題所需的沖突解決方案。

      發(fā)明內容
      提供此發(fā)明內容以便以簡化形式介紹概念的選擇,這些概念將在下面在具體實施方式
      中進一步描述。此發(fā)明內容不預期標識所要求保護的主題的關鍵特征或必要特征,也不預期用于限制所要求保護的主題的范圍。各種實施例提供調查工具以使得網(wǎng)頁內容能夠得以分析。在至少一些實施例中, 以下被稱作“代碼顧問”的調查工具允許跟蹤應用編程接口(API)的使用。通過在網(wǎng)頁腳本執(zhí)行時跟蹤API使用,代碼顧問能確定關于網(wǎng)頁內容是否存在兼容性和/或互操作性問題。如果確實存在問題,那么在至少一些實施例中,代碼顧問能選擇與該問題相關聯(lián)的一個或多個消息且能提供指南以使得該問題能得以解決。


      在所有附圖中使用相同的附圖標記來表示同樣的特征。圖I圖示了其中本文所述的各種原理可以根據(jù)一個或多個實施例采用的操作環(huán)境。圖2圖示了可以根據(jù)一個或多個實施例采用的系統(tǒng)架構。圖3圖示了根據(jù)一個或多個實施例的web瀏覽器調查工具用戶接口。圖4圖示了根據(jù)一個或多個實施例的web瀏覽器調查工具用戶接口的各方面。圖5圖示了根據(jù)一個或多個實施例的web瀏覽器調查工具用戶接口的問題解決方案方面。圖6圖示了根據(jù)一個或多個實施例的web瀏覽器調查工具用戶接口和仿真網(wǎng)頁。圖7是描述根據(jù)一個或多個實施例的方法中的步驟的流程圖。圖8圖示了能用于實施一個或多個實施例的實例系統(tǒng)。
      具體實施例方式概述
      各種實施例提供調查工具,被稱作“代碼顧問”,以使得網(wǎng)頁內容能得以分析。在至少一些實施例中,代碼顧問允許跟蹤應用編程接口(API)的使用。通過在網(wǎng)頁腳本執(zhí)行時跟蹤API使用,代碼顧問能確定關于網(wǎng)頁內容是否存在任何兼容性和/或互操作性問題。如果確實存在問題,則在至少一些實施例中,代碼顧問能選擇與該問題相關聯(lián)的一個或多個消息且能提供指南以使得該問題能得以解決。如本文所使用的,術語“問題”將被理解為以實例而非限制的方式包括與網(wǎng)頁與web瀏覽器交互的方式相關聯(lián)的兼容性和/或互操作性問題。在至少一些實施例中,如果識別出問題,則可以為用戶或開發(fā)者顯示消息。消息能提供問題的描述使得開發(fā)者被告知該問題。作為替代或作為補充,消息能提供旨在減輕問題的可選的修復(fix)選項。該修復選項當被選擇時能動態(tài)地提供針對該問題的修復。在一些情況下,動態(tài)修復能仿真網(wǎng)頁預期的行為,因此提 供關于該問題的立即反饋以及在至少一些情況下提供其解決方案。在下文的討論中,提供標題為“操作環(huán)境”的部分且其描述了其中能采用一個或多個實施例的一個環(huán)境。之后,標題為“實例實施例”的部分描述了其中可采用代碼顧問的實例實施例。接下來,標題為“實例方法”的部分描述了根據(jù)一個或多個實施例的方法。最后,標題為“實例系統(tǒng)”的部分描述了能用于實施一個或多個實施例的系統(tǒng)?,F(xiàn)考慮其中能實施一個或多個實施例的實例操作環(huán)境。操作環(huán)境
      圖I大體上以100圖示出根據(jù)一個或多個實施例的操作環(huán)境。環(huán)境100包括計算設備102,計算設備102具有一個或多個處理器104,一個或多個計算機可讀存儲介質106和駐留在計算機可讀存儲介質上且可由處理器(一個或多個)執(zhí)行的一個或多個應用108。計算機可讀存儲介質可以實例而非限制的方式包括通常與計算設備相關聯(lián)的所有形式的易失性和非易失性存儲器和/或存儲介質。這樣的介質能包括ROM、RAM、閃存、硬盤、可移動的介質等等。計算設備的一個具體實例在下面在圖8中示出和描述。此外,計算設備102包括呈web瀏覽器110形式的軟件應用。可使用任何合適的web瀏覽器,其實例可從本文件的受讓人和其它途徑獲得。此外,計算機可讀存儲介質106可包括代碼顧問111,代碼顧問111如上下文所述那樣操作。代碼顧問111能實施為獨立組件,其可由應用108和瀏覽器110利用。作為替代或作為補充,代碼顧問111能實施為應用108或瀏覽器110的部分,例如瀏覽器開發(fā)工具。在一個或多個實施例中,代碼顧問111能訪問或另外地利用位于計算設備102上的模塊,例如本地模塊112。本地模塊112可為與代碼顧問和其功能相關聯(lián)的庫模塊。作為補充或替代,本地模塊112可為被創(chuàng)建以供瀏覽器110使用的定制模塊。模塊實例在下文中描述。在操作中,代碼顧問模塊111結合從網(wǎng)站接收的網(wǎng)頁內容執(zhí)行。代碼顧問111能在構成瀏覽器平臺的API上注冊一個或多個超馳(override)。這允許代碼顧問111有效地“纏繞”API并監(jiān)視與API及其由特定網(wǎng)頁的使用相關聯(lián)的輸入、狀態(tài)和輸出值。因此,當由網(wǎng)頁調用特定API時,代碼顧問111攔截該調用且將該調用重導向至相關聯(lián)的模塊,例如本地模塊112之一。該模塊可以知道所述API、它的操作以及它在操作情形下應如何執(zhí)行。因此,設計模塊以檢查與API調用相關聯(lián)的參數(shù)和值并評估是否存在兼容性或互操作性問題。API參數(shù)和值的檢查以及因此是否存在與API相關聯(lián)的特定問題的確定,使得代碼顧問111能夠在適合時選擇可顯示的消息,可以顯示該可顯示的消息以提供關于該問題的信息并在至少一些實施例中提供其解決方案。此外,環(huán)境100包括諸如因特網(wǎng)的網(wǎng)絡116和一個或多個網(wǎng)站118,可從這些網(wǎng)站接收內容或向這些網(wǎng)站發(fā)送內容。這樣的內容可包括網(wǎng)頁內容,諸如HTML、腳本等等,其可由代碼顧問111如上下文中所述的那樣操作。網(wǎng)絡116也可表示內聯(lián)網(wǎng),計算設備102可通過內聯(lián)網(wǎng)與一個或多個網(wǎng)絡設備120通信。網(wǎng)絡設備120可實施為任何網(wǎng)絡設備,諸如(以實例而非限制的方式)網(wǎng)絡服務器;臺式計算機;便攜式計算機;手持計算機(例如個人數(shù)字助理(PDA))、蜂窩電話等等。網(wǎng)絡設備120也可包含可由代碼顧問111訪問和加載的模塊。這些模塊可以包括遠程模塊122和共用模塊124。能由第三方開發(fā)者創(chuàng)建和共用這些共用模塊124。計算設備102可實施為任何合適的計算設備,諸如(以實例而非限制的方式)臺式計算機;便攜式計算機;手持計算機(例如個人數(shù)字助理(PDA))、蜂窩電話等等。已描述了實例操作環(huán)境,現(xiàn)考慮如何根據(jù)一個或多個實施例執(zhí)行問題檢測的討論。實例實施例 圖2大體上以200圖示出根據(jù)一個或多個實施例的實例架構。在此實施例中,由代理204接收網(wǎng)頁HTML 202。代理204包括注入器206,注入器206被配置成在網(wǎng)頁HTML 202開始處插入一個或多個腳本元素,其組合由腳本元素/網(wǎng)頁HTML 208圖解地表示。插入的腳本元素可為任何合適類型的腳本元素,包括(以實例而非限制的方式)Java腳本元素等等。腳本元素(一個或多個)使得附加的代碼能夠由瀏覽器在執(zhí)行網(wǎng)頁HTML 202之前來執(zhí)行。在另一實施例中,腳本元素(一個或多個)可與網(wǎng)頁HTML同時執(zhí)行。在圖示和描述的實施例中,瀏覽器210包括加載器模塊212、注冊模塊214、代碼顧問216和一個或多個模塊222。在一個實施例中,加載器模塊212接收腳本元素/網(wǎng)頁HTML 208。在接收腳本元素/網(wǎng)頁HTML 208時,加載器模塊212加載包括代碼顧問216的架構框架。此外,加載器模塊212也可加載一個或多個模塊222,其被設計成分析API調用,如上下文所述的那樣。盡管圖2將代碼顧問216和模塊222圖示為位于瀏覽器210內,不預期將代碼顧問216和模塊222描繪為限于這一個實施例。照此,代碼顧問216可在瀏覽器210 “頂部”運行。作為替代或補充,模塊222可在瀏覽器頂部運行且可或可不與代碼顧問216整合。在一個或多個實施例中,注冊模塊214允許模塊222向代碼顧問216注冊代碼以在由網(wǎng)頁調用應用編程接口(API)之前或之后執(zhí)行。因此,模塊222向注冊模塊214注冊代碼以便指導代碼顧問216 “纏繞”相關聯(lián)的API并監(jiān)視與調用API相關聯(lián)的參數(shù)和值??墒褂萌魏魏线m類型的技術來執(zhí)行纏繞,如將由本領域技術人員了解的那樣。但作為一個實例,可利用微軟的Detours (繞路)技術來執(zhí)行纏繞??墒褂闷渌夹g,諸如下文所述的那些。在圖示和描述的實施例中,代碼顧問216包含預處理代碼220和后處理代碼226,它們與模塊222 —致地工作。預處理代碼220和后處理代碼226使模塊222能夠監(jiān)視與網(wǎng)頁且更具體而言網(wǎng)頁代碼224的相對應API調用相關聯(lián)的參數(shù)和值。當網(wǎng)頁開始在瀏覽器210內執(zhí)行時,網(wǎng)頁代碼224可以對代碼顧問纏繞的API做出API調用。API調用由API調用攔截器模塊218攔截。在操作中,當API調用攔截器模塊218攔截API調用時,代碼顧問216使用預處理代碼220來使得API調用被重導向至由模塊222表示的模塊。模塊222在實際完成對API的調用之前分析API的輸入值。輸入值包括API調用參數(shù)、自變量等等。模塊222能確定API調用的一個或多個輸入值是否存在問題且若存在問題,可以發(fā)送與該問題有關的消息到消息顯示模塊228,消息顯示模塊228能使得消息被顯示給用戶,其實例在下文提供。如果對于API調用的輸入值未檢測到問題(或者在修復了任何問題的情況下),能由網(wǎng)頁代碼224實際做出API調用且后處理代碼226能監(jiān)視作為API調用的結果的任何返回值。由后處理代碼確定的返回值然后被提供給適當?shù)哪K222以進行處理從而識別關于返回值是否存在任何問題。如果識別存在問題,則模塊222可以發(fā)送與該問題有關的消息到消息顯示模塊228使得可以顯示適當?shù)南?。消息顯示模塊228可以允許顯示各 種類型的消息。作為實例,考慮圖3,圖3在300處一般地圖示出根據(jù)一個或多個實施例的web瀏覽器調查工具用戶接口。在此實例中,web瀏覽器302具有與地址欄304中的URL “穩(wěn)·bing. com”相關聯(lián)的文本。頁面306已在內部加載瀏覽器302,瀏覽器302包含文本316和兩個空框架318。以最小化視圖示出代碼顧問308。在此實施例中,代碼顧問308顯示在網(wǎng)頁306的頂部。但是,其它代碼顧問顯示也是可能的,包括但不限于在瀏覽器的chrome中顯示,例如作為側邊欄等。在此實例中,代碼顧問308具有與之相關聯(lián)的三種類型的消息錯誤消息310、警告消息312和信息消息314。盡管說明了這三種類型的消息,但可以利用其它類型的消息。在圖示和描述的實施例中,錯誤消息310和數(shù)字一起顯示,該數(shù)字指示可用于查看的錯誤消息的數(shù)量。同樣,警告消息312和信息消息314也指示其相應消息的數(shù)量。可替換地,如果對于消息類型不存在任何消息,可以沒有消息類型的顯示。在一個或多個實施例中,可以擴展與代碼顧問308相關聯(lián)的顯示。舉例而言,通過點擊代碼顧問,其可擴展為提供附加信息的形式。作為擴展的代碼顧問308的實例,考慮圖4,其使用來自圖3的同樣的標號。在圖4中,代碼顧問408被顯示為網(wǎng)頁內的窗口 306。如上文所討論的那樣,可利用其它的顯示。在一個實施例中,代碼顧問408包含一系列標簽以允許用戶容易地導航代碼顧問408的內容。當前選擇消息日志標簽410。消息日志標簽410包含查看選項,諸如示出錯誤418以允許容易地將消息分類和管理。除了圖示的查看選項之外能利用其它查看選項。消息日志標簽410也包含錯誤消息412。在此實例中,錯誤消息412可為在圖3中的代碼顧問308中所顯示的錯誤消息310的更長解釋說明。錯誤消息412能提供其與哪個API相關聯(lián)的指示且能附加地描述關于API調用發(fā)生的錯誤。錯誤消息412還能提供錯誤描述的解釋說明,諸如“這是針對互操作性和順應性的故意變化”。或者,當鼠標在單獨窗口中在錯誤上懸停時可提供這些描述。在一個或多個實施例中,可顯示錯誤消息412,以及用戶采取行動的提示。行動可為選項的選擇,諸如修復選項414和/或調試選項416。在此實例中,修復選項414能允許用戶確認所顯示的錯誤消息412并使得修復能夠針對錯誤來實施。作為實例,考慮圖5。此處,響應于用戶選擇修復選項414,不再顯示錯誤消息412。而是,信息消息512告知用戶針對錯誤消息412的修復已實現(xiàn)。在替代實施例中,可以顯示錯誤消息412和信息消息512這二者。在一個或多個實施例中,所實現(xiàn)的修復可以顯示為網(wǎng)頁的仿真行為。仿真行為可以立即顯示或者可以直到用戶刷新頁面才顯示,最小化代碼顧問,或者執(zhí)行另一行動。所實現(xiàn)的修復能允許通過利用到不同于網(wǎng)頁正調用的API的重導向來顯示仿真行為。在一個實施例中,可以由模塊,諸如上文所述的模塊222來指定到不同API的重導向。在一個實例中,仿真行為可為基于到先前版本的瀏覽器的瀏覽器API的重導向的遺留行為(legacybehavior)。如圖6中所示的那樣,可最小化代碼顧問308以包括上文所述的消息類型。網(wǎng)頁306現(xiàn)包含在先前未顯示的框架318內顯示的圖片。由所實現(xiàn)的修復所提供的仿真行為允許頁面像網(wǎng)頁正預期的那樣執(zhí)行。此外,在一些實施例中,錯誤消息412 (圖5)顯示調試選項416。當被檢查或另外被選擇時,調試選項416提供如何解決錯誤消息412的指南。指南的實例包括但不限于到 用戶文檔中的鏈接;到代碼中的鏈接;突出顯示或另外在視覺上指示的代碼;關于符合標準的附加信息;到代碼中發(fā)生錯誤的區(qū)域的導航;和/或關于該問題的代碼列表。此外,調試選項可在由其本身選擇時或者在利用修復選項414選擇時提供代碼的自動校正??紤]到各種實施例,現(xiàn)考慮能根據(jù)一個或多個實施例實施的實例方法。實例方法
      圖7是描述根據(jù)一個或多個實施例的方法中的步驟的流程圖。該方法可結合任何合適的硬件、軟件、固件或其組合來實施。在至少一些實施例中,該方法的各方面能由諸如上文所述的適當配置的代碼顧問來實施。步驟700從網(wǎng)頁接收應用編程接口(API)調用。能使用任何合適的API調用。舉例而言,在至少一些實施例中,API調用可包括由網(wǎng)頁對與瀏覽器相關聯(lián)的API做出的API調用。步驟702確定關于API調用是否存在問題。這種確定能通過使用纏繞相關聯(lián)的API的代碼組件來執(zhí)行。在至少一些實施例中,代碼組件可被配置成通過監(jiān)視由調用所提供的輸入值、網(wǎng)頁的狀態(tài)值和作為API調用結果的輸出或返回值中的一種或多種來處理API調用。網(wǎng)頁的狀態(tài)值可包括(以實例而非限制的方式)與元素、風格、Java腳本或Java腳本框架相關聯(lián)的狀態(tài)。這些問題可包括任何合適類型的兼容性或互操作問題。對確定存在問題做出響應,步驟704選擇與該問題相關聯(lián)的可顯示消息且使得該消息被顯示。在至少一些實施例中,對于與網(wǎng)頁相關聯(lián)的所有API,可重復步驟700-704。在其它實施例中,對于用戶可定制的指定API可重復步驟700-704??商鎿Q地,步驟700-704可對于存在可用于纏繞API的代碼組件的那些API重復。描述了根據(jù)一個或多個實施例的實例方法,現(xiàn)考慮能用于實施上文所述的實施例中的一個或多個的實例系統(tǒng)。實例系統(tǒng)
      圖8示出能用于實施上文所述的各種實施例的實例計算設備800。計算設備800可為例如圖I的計算設備102或任何其它合適的計算設備。
      計算設備800包括一個或多個處理器或處理單元802,一個或多個存儲器和/或存儲組件804,一個或多個輸入/輸出(I/O)設備806和總線808,總線808允許各種組件和設備彼此通信??偩€808表示多種類型總線結構中的任何的一個或多個,包括使用多種總線架構中任何架構的存儲器總線或存儲器控制器、外圍總線、加速圖形端口和處理器或本地總線。總線808可包括有線和/或無線總線。存儲器/存儲組件804表示一個或多個計算機存儲介質。組件804可包括易失性介質(諸如隨機存取存儲器(RAM)和/或非易失性介質(諸如只讀存儲器(ROM)、閃存、光盤、磁盤等)。組件804可包括固定介質(例如,RAM、ROM、固定硬驅動器等)以及可移動的介質(例如,閃存驅動器、可移動的硬驅動器、光盤等)。一個或多個輸入/輸出設備806允許用戶向計算設備800錄入命令和信息,且也允許向用戶和/或其它組件或設備提供信息。輸入設備的實例包括鍵盤、光標控制設備(例如,鼠標)、麥克風、掃描儀等。輸出設備的實例包括顯示設備(例如,監(jiān)視器或投影儀)、揚聲器、打印機、網(wǎng)卡等。

      本文可在軟件或程序模塊的一般情形下描述各種技術。一般而言,軟件包括例程、程序、目標、組件、數(shù)據(jù)結構等等,其執(zhí)行特定任務或實施特定抽象數(shù)據(jù)類型。這些模塊和技術的實施方式可存儲在或傳輸于某種形式的計算機可讀介質上。計算機可讀介質可為可由計算設備存取的任何一個或多個可用介質。舉例而言但并無限制意義地,計算機可讀介質可包括“計算機可讀存儲介質”?!坝嬎銠C可讀存儲介質”包括以任何方法或技術實施的易失性和非易失性、可移動和不可移動的介質,其用于存儲諸如計算機可讀指令、數(shù)據(jù)結構、程序模塊或其它數(shù)據(jù)之類的信息。計算機可讀存儲介質包括但不限于RAM、ROM、EEPR0M、閃存或其它存儲技術;CD-ROM、數(shù)字多用盤(DVD)或其它光學存儲設備;磁盒、磁帶、磁盤存儲設備或其它磁存儲設備;或可用于存儲能由計算機訪問的所需信息的任何其它介質。結論
      各種實施例提供調查工具,被稱作“代碼顧問”,以使得網(wǎng)頁內容能得以分析。在至少一些實施例中,代碼顧問允許跟蹤應用編程接口(API)的使用。通過在網(wǎng)頁腳本執(zhí)行時跟蹤API使用,代碼顧問能確定關于網(wǎng)頁內容是否存在任何兼容性和/或互操作性問題。如果確實存在問題,在至少一些實施例中,代碼顧問能選擇與該問題相關聯(lián)的一個或多個消息且能提供指南以使得問題能夠得以解決。盡管以特定于結構特征和/或方法行為的語言描述了主題,應了解在所附權利要求中限定的主題不必限于上文所述的特定特征或行為。而是,上文所述的特定特征和行為被公開為實施權利要求的實例形式。
      權利要求
      1.一種計算機實施的方法,包括 從網(wǎng)頁接收(700)應用編程接ロ(API)調用; 通過使用代碼組件來確定(702)關于API調用是否存在問題,所述代碼組件纏繞相關聯(lián)的API且被配置成處理API調用且識別與所述API調用相關聯(lián)的一個或多個問題;以及對于確定存在問題做出響應,選擇(704)與所述問題相關聯(lián)的可顯示消息。
      2.根據(jù)權利要求I所述的計算機實施的方法,其中,所述可顯示消息包括 錯誤消息, 警告消息,或者 信息消息。
      3.根據(jù)權利要求I所述的計算機實施的方法,還包括 顯示所述可顯示消息;以及 提示用戶采取行動。
      4.根據(jù)權利要求3所述的計算機實施的方法,其中所述行動包括 選擇修復選項來允許顯示仿真行為,或者, 選擇調試選項。
      5.根據(jù)權利要求4所述的計算機實施的方法,其中,所述仿真行為包括接收調用的先前版本的瀏覽器的遺留行為。
      6.根據(jù)權利要求4所述的計算機實施的方法,其中,所述仿真行為動態(tài)地且實時地顯
      7.一種用于分析網(wǎng)頁的系統(tǒng),包括 一個或多個處理器(104);以及 計算機可讀的存儲介質(106),其收錄計算機可讀指令,當所述計算機可讀指令由ー個或多個處理器執(zhí)行時使得所述ー個或多個處理器實施工具(111),所述工具(111)被配置成 加載與已插入于網(wǎng)頁內的腳本元素相關聯(lián)的至少ー個模塊; 允許至少一個模塊纏繞至少ー個應用編程接ロ(API); 加載其中插入了所述腳本元素的網(wǎng)頁;以及 使用至少ー個模塊處理所述網(wǎng)頁對所述API的一次或多次調用。
      8.根據(jù)權利要求7所述的系統(tǒng),其中,處理所述一次或多次調用包括監(jiān)視與所述API有關的信息,所述信息包括 輸入值; 返回值;或者 網(wǎng)頁狀態(tài)。
      9.根據(jù)權利要求8所述的系統(tǒng),其中所述網(wǎng)頁狀態(tài)包括與以下相關聯(lián)的狀態(tài) 元素; 風格; Java腳本;或者 Java腳本框架。
      10.根據(jù)權利要求7所述的系統(tǒng),其中所述工具實施為獨立工具。
      全文摘要
      各種實施例提供調查工具以使得網(wǎng)頁內容能得以分析。在至少一些實施例中,在后面被稱作“代碼顧問”的調查工具允許跟蹤應用編程接口(API)的使用。通過在網(wǎng)頁腳本執(zhí)行時跟蹤API使用,代碼顧問能確定關于網(wǎng)頁內容是否存在兼容性和/或互操作性問題。如果確實存在問題,在至少一些實施例中,代碼顧問能選擇與該問題相關聯(lián)的一個或多個消息且能提供指南以使得該問題能得以解決。
      文檔編號G06F11/36GK102681933SQ20121001853
      公開日2012年9月19日 申請日期2012年1月20日 優(yōu)先權日2011年1月20日
      發(fā)明者A.M.羅斯, J.A.穆爾, M.A.西爾比 申請人:微軟公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1