本發(fā)明涉及一種跨瀏覽器的插件,尤其涉及跨瀏覽器的標準插件,具體是指一種跨瀏覽器插件的自適應(yīng)方法。
背景技術(shù):
::瀏覽器是指可以顯示網(wǎng)頁服務(wù)器或者文件系統(tǒng)的html文件(標準通用標記語言的一個應(yīng)用)內(nèi)容,并讓用戶與這些文件交互的一種軟件。為提高瀏覽器的擴展性和易用性,瀏覽器需要提供插件支持用戶訪問互聯(lián)網(wǎng)上豐富的多媒體信息。瀏覽器內(nèi)核分為trident、gecko、webkit、presto。trident(又稱為mshtml)是微軟開發(fā)的一種排版引擎,其代表產(chǎn)品為internetexplorer,因此又稱其為ie內(nèi)核。gecko是一套開放源代碼的、以c++編寫的網(wǎng)頁排版引擎,gecko內(nèi)核代表作品mozillafirefox。webkit是一個開源項目,包含了來自kde項目和蘋果公司的部分組件,它的特點在于源碼結(jié)構(gòu)清晰、渲染速度極快。缺點是對網(wǎng)頁代碼的兼容性不高,導致一些編寫不標準的網(wǎng)頁無法正常顯示。主要代表作品有safari和google的瀏覽器chrome。presto是由operasoftware開發(fā)的瀏覽器排版引擎,支持隨著dom及script語法的事件而對網(wǎng)頁重新排版,主要代表作品為opera。瀏覽器插件技術(shù)主要用于擴充瀏覽器功能,主要有登記mime類型,在瀏覽器串口中開設(shè)自己的工作窗口,接受和處理鍵盤、鼠標實踐,使用url從網(wǎng)絡(luò)獲取、傳送數(shù)據(jù),添加指向新的url熱鍵或熱區(qū),控制html頁面等。由于瀏覽器內(nèi)核的多樣性,不同的內(nèi)核支持不同標準的插件。因為插件由不同的發(fā)行商進行插件開發(fā)發(fā)行,其技術(shù)水平良莠不齊,插件程序很可能與其它運行中的程序發(fā)生沖突,從而導致諸如各種頁面錯誤,運行時間錯誤等等現(xiàn)象,阻塞了正常瀏覽,且不同的瀏覽器開發(fā)標準不一致,導致瀏覽器插件僅能在特定瀏覽器中運行,對于不同的瀏覽器需要發(fā)布不同的插件,無法做到插件的統(tǒng)一,同時在瀏覽器讀取網(wǎng)頁文件時,當網(wǎng)頁文件存在格式或者其他錯誤無法被當前瀏覽器正常識別最終無法正常顯示。技術(shù)實現(xiàn)要素:本發(fā)明提供一種跨瀏覽器插件的自適應(yīng)方法,用于解決現(xiàn)有技術(shù)中存在的:瀏覽器在讀取網(wǎng)頁文件時,當網(wǎng)頁文件存在格式或者編寫錯誤而導致瀏覽器在渲染時無法正常顯示的問題,為了解決上述技術(shù)問題,達到在無需更換網(wǎng)頁文件的情況下,對網(wǎng)頁文件的錯誤進行修改并能夠被當前瀏覽器正常顯示的技術(shù)效果,本發(fā)明通過下述技術(shù)方案實現(xiàn):一種跨瀏覽器插件框架的自適應(yīng)方法,包括標準瀏覽器插件,標準瀏覽器插件對瀏覽器讀取網(wǎng)站的網(wǎng)頁文件自適應(yīng),具體包括以下步驟:步驟1.1將所述標準瀏覽器插件載入當前瀏覽器;步驟1.2標準瀏覽器插件對當前瀏覽器內(nèi)核進行訪問并讀取當前瀏覽器的信息;步驟1.3標準瀏覽器插件再對瀏覽器讀取網(wǎng)站的網(wǎng)頁文件進行解析,判斷網(wǎng)頁文件與當前瀏覽器是否兼容;步驟1.4標準瀏覽器插件再根據(jù)當前瀏覽器內(nèi)核的類型對解析的網(wǎng)頁文件進行一致性調(diào)整;步驟1.5瀏覽器將調(diào)整后的網(wǎng)頁文件進行渲染顯示。工作流程說明:因為插件由不同的發(fā)行商進行插件開發(fā)發(fā)行,其技術(shù)水平良莠不齊,插件程序很可能與其它運行中的程序發(fā)生沖突,從而導致諸如各種頁面錯誤,運行時間錯誤等等現(xiàn)象,阻塞了正常瀏覽,且不同的瀏覽器開發(fā)標準不一致,導致瀏覽器插件僅能在特定瀏覽器中運行,對于不同的瀏覽器需要發(fā)布不同的插件,無法做到插件的統(tǒng)一,為了能夠做到適應(yīng)各個瀏覽器內(nèi)型,具體開發(fā)的過程是首先定義統(tǒng)一的標準開發(fā)平臺,標準的瀏覽器插件是通過標準開發(fā)平臺開發(fā)而來,首先是在標準開發(fā)平臺上創(chuàng)建標準瀏覽器插件,最后將標準瀏覽器插件發(fā)送至瀏覽器上,標準開發(fā)平臺自帶有解析器和類加載器的標準框架,所述標準框架內(nèi)設(shè)置有插件結(jié)構(gòu),插件結(jié)構(gòu)包括至少一個根目錄,在所述根目錄下并列建立有至少四個子目錄,分別為通用程序集、插件文件、庫文件、通用配置,其中通用程序集里面放置有標準瀏覽器插件常用的通用程序,通用配置內(nèi)放置有標準瀏覽器插件常用的配置,庫文件內(nèi)放置有標準瀏覽器插件常用的庫文件等,子目錄中的插件文件下還設(shè)置有多個插件功能模塊,在每一個的功能模塊中都含有4個單元,分別是程序集、腳本文件、網(wǎng)頁文件、庫文件,程序集的作用是定義插件的屬性,例如名稱、版本、類型等信息,網(wǎng)頁文件是具體實現(xiàn)插件的功能,庫文件是跟瀏覽器互動的腳本文件,用戶可以在這個4個單元內(nèi)編寫相應(yīng)程序代碼,具體是指的在網(wǎng)頁文件下進行編寫,從而形成相應(yīng)的插件功能,標準框架的類加載器根據(jù)通用配置對插件文件、通用程序集和庫文件進行加載、調(diào)用、組合成相應(yīng)的標準瀏覽器插件。標準開發(fā)平臺內(nèi)還能夠?qū)藴蕿g覽器插件進行試運行,在試運行過程中還存在報警提示,標準開發(fā)平臺上開發(fā)出的標準瀏覽器插件根據(jù)虛擬的網(wǎng)絡(luò)環(huán)境模擬標準瀏覽器插件在運行時會出現(xiàn)的問題,比如網(wǎng)頁無法正常顯示,圖片無法正常打開,此時會有提示信息,對提示信息進行處理,將標準瀏覽器插件反應(yīng)至相應(yīng)的插件結(jié)構(gòu)的具體位置中,在相應(yīng)的位置對標準瀏覽器插件的網(wǎng)頁文件進行修改,已達到適應(yīng)各種不同瀏覽器內(nèi)核的需求。對已經(jīng)試運行成功或者是返回修改后的再試運行成功的標準瀏覽器插件進行組織、打包并發(fā)送至瀏覽器,此過程便是將標準瀏覽器插件載入當前瀏覽器中的具體過程。開發(fā)標準瀏覽器插件有利于統(tǒng)一,在需要開發(fā)插件時,在標準開發(fā)平臺的插件結(jié)構(gòu)下編寫相應(yīng)程序,進而組裝,形成具有相應(yīng)功能的插件,能夠減少人力資源的浪費,同時對不同瀏覽器的類型也能夠完全適應(yīng)。標準開發(fā)平臺上開發(fā)出的標準瀏覽器插也能夠在此進行試運行,運行成功便進入下一步存儲瀏覽器上,訪問等,當是試運行不成功,標準瀏覽器插件將會被返回插件結(jié)構(gòu),進行錯誤的修改,已達到所需的要求。標準瀏覽器插件能夠?qū)Ξ斍盀g覽器內(nèi)核進行訪問讀取當前瀏覽器的信息,值得說明的是,訪問過程以及讀取信息的過程是本領(lǐng)域公知的常識,故在此不在進行過多的闡述。當前瀏覽器的渲染引擎在窗口上顯示請求到的內(nèi)容,該內(nèi)容是瀏覽器能夠讀取網(wǎng)站的網(wǎng)頁文件,通常情況下,渲染引擎可以顯示html、xml等文檔及圖片,但是對于特殊文件則無法正常渲染,而標準瀏覽器插件則可以對特殊文件進行渲染,然后在瀏覽器窗口上顯示,特殊的文件比如是pdf文件、ceb文件、flashplayer等等特殊類型的文件。對于無法正常顯示的特殊文件,此時標準瀏覽器插件便能夠?qū)W(wǎng)頁文件進行解析,通過解析達到能夠使得當前瀏覽器正常識別的網(wǎng)頁文件,并在對相應(yīng)的網(wǎng)頁文件進行一致性的調(diào)整,從而使得當前瀏覽器能夠正常的渲染顯示。為了更好實現(xiàn)標準瀏覽器插件在對網(wǎng)頁文件進行解析,并達到解析完整性,進一步地限定,所述步驟1.3中標準瀏覽器插件再對瀏覽器讀取網(wǎng)站的網(wǎng)頁文件進行解析的具體步驟為:步驟1.3.1:標準瀏覽器插件將網(wǎng)頁文件的源文件進行文法分析;步驟1.3.2:標準瀏覽器插件對網(wǎng)頁文件的源文件搭建解析樹;步驟1.3.3:標準瀏覽器插件根據(jù)當前瀏覽器內(nèi)核的類型將解析樹進行轉(zhuǎn)換為能夠被當前瀏覽器識別的文檔。標準瀏覽器插件在對網(wǎng)頁文件進行解析的具體過程,解析網(wǎng)頁文件是將文件轉(zhuǎn)化為有意義的結(jié)構(gòu),即是能夠讓代碼被理解和使用的結(jié)構(gòu),網(wǎng)頁文件通常是一種代碼格式,標準瀏覽器插件先對網(wǎng)頁文件的代碼進行文法分析,代碼格式都有一定的文法規(guī)則,文法是指基于文檔依據(jù)的語法規(guī)則,即文檔的語言或者是格式,每種可被解析的文件的格式必須具有詞匯以及語法規(guī)則組成的特定的文法。標準瀏覽器插件內(nèi)含有解析器,解析器一般分為語法分析器和詞法分析器,值得說明的是語法分析器和詞法分析器是本領(lǐng)域內(nèi)公知的,故在此不在進行過多的闡述,詞法分析器主要是詞法分析,是將輸入分解為符號,符號是語言的詞匯表,相當于我們熟悉的字典中的單詞,語法分析器主要是對語法進行分析,語法分析是指對語言應(yīng)用語法的規(guī)則,解析器一般分兩個部分工作,詞法分析器負責將輸入分解為合法的符號,語法分析器則根據(jù)語言的語法規(guī)則分析出文檔,解析樹根據(jù)上述的詞法分析和語法分析最后將文檔構(gòu)建為解析樹。得到的解析樹并不是最終的結(jié)構(gòu),解析器需要將解析樹轉(zhuǎn)換為能夠為當前瀏覽器內(nèi)核識別的文檔。該過程更加具體的描述了解析的過程,使得本發(fā)明的方案更加完善,通過對網(wǎng)頁文件的解析,并將無法渲染的網(wǎng)頁文件進行轉(zhuǎn)換能夠被當前瀏覽器識別的文件。對于轉(zhuǎn)換位能夠識別的文檔,因為開發(fā)者的開發(fā)水平參差不齊,存在較多的人為錯誤,為了更好的實現(xiàn)本發(fā)明,進一步地限定,所述步驟1.4中再根據(jù)當前瀏覽器內(nèi)核的類型對解析的網(wǎng)頁文件進行一致性調(diào)整,具體一致性調(diào)整的步驟為:步驟1.4.1:對文檔進行符號的識別并傳遞至構(gòu)建器;步驟1.4.2:構(gòu)建器將接收到的符號重新構(gòu)建能夠適應(yīng)當前瀏覽器內(nèi)核的構(gòu)建樹;步驟1.4.3:構(gòu)建器根據(jù)當前瀏覽器內(nèi)核對重新建立的構(gòu)建樹進行符號的修改;步驟1.4.4:將修改后的構(gòu)建樹轉(zhuǎn)換為網(wǎng)頁文件。通過解析器對文檔的符號進行識別,符號識別是指根據(jù)符號識別的算法,將輸入解析變?yōu)榉?,并將其傳遞給樹構(gòu)建器,并讀取下一個字符,以識別下一個符號,直至處理完所有輸入,符號識別主要是對開始標簽、結(jié)束標簽、屬性名以及屬性值進行識別。將構(gòu)建樹構(gòu)建階段,將元素附加到樹上,每個由符號識別器識別生成的節(jié)點將會被構(gòu)建樹進行處理。構(gòu)建器根據(jù)當前瀏覽器內(nèi)核重新建立構(gòu)建樹在構(gòu)建過程中還會對符號進行修改,已到達能夠正常渲染的效果。為了更加具體的實現(xiàn)本發(fā)明,以及實現(xiàn)更好的自適應(yīng),進一步地限定,所述步驟1.4.3中構(gòu)建器對重新建立的構(gòu)建樹進行修改包括對網(wǎng)頁文件中源文件的錯誤或不規(guī)范編寫進行修復(fù)。對網(wǎng)頁文件中存在的錯誤進行修改,主要是修改不規(guī)范的書寫方法,以及多余符號,達成能夠正常渲染的效果。為了更加具體的實現(xiàn)本發(fā)明,進一步地限定,所述修復(fù)為增加或者是減少源文件的符號。為了節(jié)約程序,節(jié)約時間,在對網(wǎng)頁文件進行修改后,進一步地限定,在所述步驟1.4.3和步驟1.4.4之間還包括有對修改后的網(wǎng)頁文件進行試運行。試運行成功便能夠正常的渲染,如果不成功,將會進一步返回修改直至到修改成功為止。為了使在操作過程中,使本發(fā)明更加完善,進一步地限定,在所述試運行過程中還設(shè)置有報警提示。在試運行過程中當出現(xiàn)不成功的時候,馬上提示報警,并顯示出報警的信息,便能夠更快更準的對網(wǎng)頁文件進行修改。本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點及有益效果:(1)本發(fā)明通過標準瀏覽器插件對網(wǎng)頁文件的解析以及一致性的調(diào)整,使得網(wǎng)頁文件能夠正常被渲染出來,有利于節(jié)約成本,不影響客戶的操作;(2)本發(fā)明通過對網(wǎng)頁文件的一致性調(diào)整,尤其是對特殊的文件,比如是pdf等文件,使得本產(chǎn)品的通用性更強,使用范圍更廣;(3)本發(fā)明通過在一致性調(diào)整后再進行試運行,能夠減少錯誤,提高使用的效率;(4)本發(fā)明通過在試運行中設(shè)置報警提示,報警提示能夠?qū)﹀e誤信息經(jīng)常報警處理,及時處理相應(yīng)的錯誤,節(jié)約時間。附圖說明通過閱讀參照以下附圖對非限制性實施例所作的詳細描述,本發(fā)明的其他特征、目的和優(yōu)點將會變得更為明顯:圖1為本發(fā)明跨瀏覽器插件自適應(yīng)方法的流程圖;圖2為本發(fā)明跨瀏覽器插件對網(wǎng)頁文件解析的流程圖;圖3為本發(fā)明跨瀏覽器插件對網(wǎng)頁文件解析后一致性調(diào)整的流程圖;圖4為本發(fā)明標準瀏覽器插件流程圖;圖5為本發(fā)明標準瀏覽器插件的插件框架結(jié)構(gòu)示意圖;圖6為本發(fā)明瀏覽器組件圖。具體實施方式下面詳細描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。實施例1:本實施例的主要流程,如圖1至圖6所示:1.一種跨瀏覽器插件的自適應(yīng)方法,包括標準瀏覽器插件,標準瀏覽器插件對瀏覽器讀取網(wǎng)站的網(wǎng)頁文件自適應(yīng),具體包括以下步驟:步驟1.1將所述標準瀏覽器插件載入當前瀏覽器;步驟1.2標準瀏覽器插件對當前瀏覽器內(nèi)核進行訪問并讀取當前瀏覽器的信息;步驟1.3標準瀏覽器插件再對瀏覽器讀取網(wǎng)站的網(wǎng)頁文件進行解析,判斷網(wǎng)頁文件與當前瀏覽器是否兼容;步驟1.4標準瀏覽器插件再根據(jù)當前瀏覽器內(nèi)核的類型對解析的網(wǎng)頁文件進行一致性調(diào)整;步驟1.5瀏覽器將調(diào)整后的網(wǎng)頁文件進行渲染顯示。具體的實施方式:對于基于不同渲染引擎開發(fā)的網(wǎng)頁工程,其格式及語法是不一樣的,且很多網(wǎng)站不按照w3c標準進行設(shè)計和研發(fā),導致渲染引擎和標準瀏覽器插件對網(wǎng)頁文件進行解析時,無法正常顯示。對于這種情況,需要對解析后的網(wǎng)頁文件進行調(diào)整,將解析后的網(wǎng)頁文件進行格式完善和調(diào)整,實現(xiàn)標準瀏覽器插件的自適應(yīng)。標準瀏覽器插件是根據(jù)標準開發(fā)平臺開發(fā)而來,首先需要先定義標準開發(fā)平臺,在標準開發(fā)平臺上設(shè)置出標準瀏覽器插件,標準開發(fā)平臺帶有解析器和類加載器,標準開發(fā)平臺的標準框架內(nèi)設(shè)置插件結(jié)構(gòu),插件結(jié)構(gòu)是包括至少一個根目錄,在根目錄下并列建立有通用程序集、插件文件、庫文件、通用配置的子目錄,其中通用程序集文件中僅存有常用的程序集,通用配置為插件的基本配置,庫文件為常用的庫文件。每個子目錄之間具有物理隔離性,在插件文件下按照功能的不同設(shè)置不同的插件功能模塊,并且各插件功能模塊之間同時也具有物理隔離性,設(shè)置該插件結(jié)構(gòu),并把插件相應(yīng)的功能進行分類,每一個插件功能模塊為一個功能,該插件功能模塊內(nèi)有實現(xiàn)該功能需要的程序集、腳本文件、頁面文件圖片等全部文件,在此插件功能模塊下編寫相應(yīng)的程序,便能夠?qū)崿F(xiàn)相應(yīng)的功能。插件功能模塊是根據(jù)插件的基本架構(gòu)模式由此而來,一般一個完整的插件是由4個部分組成,分別是程序集、腳本文件、庫文件和網(wǎng)頁文件,通常庫文件的作用是定義插件的屬性,例如名稱、版本、類型等;而網(wǎng)頁文件頁面內(nèi)可以包含圖片、鏈接,甚至音樂、程序等非文字元素,是具體實現(xiàn)插件的功能,用戶可以根據(jù)需求,在網(wǎng)頁文件下編寫,以及將插件的目錄按照開發(fā)標準平臺的目錄進行組織存放。開發(fā)出標準瀏覽器插件后,每一個功能都將被封裝在插件功能模塊中,插件功能模塊內(nèi)存放有更多的源文件目錄,每一個標準瀏覽器插件都是具有相應(yīng)的功能以及相應(yīng)的界面,業(yè)務(wù)邏輯和數(shù)據(jù)等代碼組成,由于每個插件功能模塊之間也具有物理隔離性,開發(fā)者可以開發(fā)自己的功能,類加載器對這些代碼進行解析,并在這上面進行獨立測試、部署以及升級,一旦開發(fā)完成后,便在開發(fā)標準平臺上進行由類加載器進行組合。標準開發(fā)平臺上類加載器對標準瀏覽器插件進行解析、運行,按照標準開發(fā)平臺的標準框架,標準框架內(nèi)有較多的插件模塊。標準瀏覽器插件開發(fā)完成將需要進行試運行,試運行成功后將打包發(fā)送至瀏覽器。標準瀏覽器插件先對當前瀏覽器類型進行訪問并讀取相應(yīng)的信息,當前瀏覽器讀取網(wǎng)站的網(wǎng)頁文件無法顯示時候,則標準瀏覽器插件對網(wǎng)頁進行解析以及一致性的標準,具體解析和調(diào)整以下舉例說明,以網(wǎng)頁文件為html的格式進行說明,對于客戶端html文件,標準瀏覽器插件在獲取到該文件時,需要對文件進行一致性調(diào)整。具體解析的過程為:解析分為語法分析和詞法分析兩個子過程,語法分析是將輸入分解為符合,符號是語言的詞匯表,語法分析是指對語言應(yīng)用的法則,詞法分析負責將輸入分解為合法的符號,根據(jù)語言的語法規(guī)則分析html的文檔結(jié)構(gòu),從而構(gòu)建解析樹。得到解析樹后,標準瀏覽器插件對解析樹進行轉(zhuǎn)換,轉(zhuǎn)換為能夠被當前瀏覽器識別的網(wǎng)頁文檔,及時轉(zhuǎn)變?yōu)榱四軌蜃R別的網(wǎng)頁文檔,但是存在網(wǎng)頁文檔編寫錯誤或者格式錯誤可能性,還需要對網(wǎng)頁文檔進行一致性的調(diào)整,具體一致性調(diào)整的過程為:1)符號識別html的符號包括開始標簽、結(jié)束標簽、屬性名及屬性值。符號識別是指根據(jù)符號識別算法,將輸入解析為符號,并將其傳遞給樹構(gòu)建器,并讀取下一個字符,以識別下一個符號,直至處理完所有輸入。符號識別算法相對較為復(fù)雜,用html頁面來解釋這個原理:<html><body>helloworld</body></html>初始狀態(tài)為“datastate”,當遇到“<”字符,狀態(tài)變?yōu)椤皌agopenstate”,讀取一個a-z的字符將產(chǎn)生一個開始標簽符號,狀態(tài)相應(yīng)變?yōu)椤皌agnamestate”,一直保持這個狀態(tài)直到讀取到“>”,每個字符都附加到這個符號名上,例子中創(chuàng)建的是一個html符號。當讀取到“>”,當前的符號就完成了,此時,狀態(tài)回到“datastate”,“<body>”重復(fù)這一處理過程。到這里,html和body標簽都識別出來了?,F(xiàn)在,回到“datastate”,讀取“helloworld”中的字符“h”將創(chuàng)建并識別出一個字符符號,這里會為“helloworld”中的每個字符生成一個字符符號。這樣直到遇到“</body>”中的“<”?,F(xiàn)在,又回到了“tagopenstate”,讀取下一個字符“/”將創(chuàng)建一個閉合標簽符號,并且狀態(tài)轉(zhuǎn)移到“tagnamestate”,還是保持這一狀態(tài),直到遇到“>”。然后,產(chǎn)生一個新的標簽符號并回到“datastate”。后面的“</html>”將和“</body>”一樣處理。2)重新搭建構(gòu)建樹在樹的構(gòu)建階段,將修改以document為根的dom樹,將元素附加到樹上,每個由符號識別器識別生成的節(jié)點將會被樹構(gòu)造器進行處理,規(guī)范中定義了每個符號相對應(yīng)的dom元素,對應(yīng)的dom元素將會被創(chuàng)建。這些元素除了會被添加到dom樹上,還將被添加到開放元素堆棧中。這個堆棧用來糾正嵌套的未匹配和未閉合標簽,這個算法也是用狀態(tài)機來描述,所有的狀態(tài)采用插入模式。繼續(xù)闡述構(gòu)建樹的原理:此階段將符號識別階段生成的符號序列作為輸入,然后開始構(gòu)建。首先是“initialmode”,接收到html符號后將轉(zhuǎn)換為“beforehtml”模式,在這個模式中對這個符號進行再處理。此時,創(chuàng)建了一個htmlhtmlelement元素,并將其附加到根document對象上。狀態(tài)此時變?yōu)椤癰eforehead”,接收到body符號時,即使這里沒有head符號,也將自動創(chuàng)建一個htmlheadelement元素并附加到樹上。現(xiàn)在,轉(zhuǎn)到“inhead”模式,然后是“afterhead”。到這里,body符號會被再次處理,將創(chuàng)建一個htmlbodyelement并插入到樹中,同時,轉(zhuǎn)移到“inbody”模式。然后,接收到字符串“helloworld”的字符符號,第一個字符將導致創(chuàng)建并插入一個text節(jié)點,其他字符將附加到該節(jié)點。接收到body結(jié)束符號時,轉(zhuǎn)移到“afterbody”模式,接著接收到html結(jié)束符號,這個符號意味著轉(zhuǎn)移到了“afterafterbody”模式,當接收到文件結(jié)束符時,整個解析過程結(jié)束。3)自適應(yīng)調(diào)整由于某些html頁面是按照gecko的標準來編寫,而某些windows用戶則是按照trident的標準來編寫,還有一些則是按照webkit的標準來編寫,不同渲染引擎之間識別符號的格式不一致,插件自適應(yīng)根據(jù)當前瀏覽器的內(nèi)核對輸入文件進行分析,自動修改和完善元素,使文件可以正常顯示。例如:<table><table><tr><td>innertable</td></tr></table><tr><td>outertable</td></tr></table>當前瀏覽器內(nèi)核為webkit,通過自適應(yīng)插件對輸入文件進行分析和處理后可正常渲染。如果沒有自適應(yīng)插件,webkit則會將嵌套的表格變?yōu)閮蓚€兄弟表格:<table><tr><td>outertable</td></tr></table><table><tr><td>innertable</td></tr></table>另一方面,對于某些編寫不規(guī)范、錯誤的html頁面,自適應(yīng)插件可自動對標簽和元素進行修復(fù)。當對于客戶端為css文件,自適應(yīng)插件在獲取到該文件時,需要對文件進行一致性調(diào)整。具體設(shè)置有:不同于html,css屬于上下文無關(guān)文法,可以用類似bnf的格式來定義。一個規(guī)則集合具有一個或是可選個數(shù)的多個選擇器,這些選擇器以逗號和空格(s表示空格)進行分隔。每個規(guī)則集合包含大括號及大括號中的一條或多條以分號隔開的聲明。聲明和選擇器在后面進行定義。例如對于webkit內(nèi)核的瀏覽器使用flex和bison解析生成器從css語法文件中自動生成解析器。bison創(chuàng)建一個自底向上的解析器,firefox使用自頂向下解析器。它們都是將每個css文件解析為樣式表對象,每個對象包含css規(guī)則,css規(guī)則對象包含選擇器和聲明對象,以及其他一些符合css語法的對象。自適應(yīng)插件根據(jù)解析器生成的不同結(jié)果進行調(diào)整,實現(xiàn)css的自適應(yīng)。在對網(wǎng)頁文件進行自適應(yīng)調(diào)整后進行試運行,該試運行有利于檢查錯誤,便于修改,同時試運行時還設(shè)置有報警提示,在遇到問題時,即使提示更加高效??梢岳斫獾氖?,根據(jù)本發(fā)明一個實施例的解析器的結(jié)構(gòu),例如詞法分析器和語法分析器等部件的工作原理和工作過程都是現(xiàn)有技術(shù),且為本領(lǐng)域的技術(shù)人員所熟知,這里就不再進行詳細描述。盡管已經(jīng)示出和描述了本發(fā)明的實施例,本領(lǐng)域的普通技術(shù)人員可以理解:在不脫離本發(fā)明的原理和宗旨下可以對這些實施例進行多種變化、修改、替換和變型,本發(fā)明的范圍由權(quán)利要求及其等同物限定。當前第1頁12當前第1頁12