專利名稱:頁(yè)面顯示的排版方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種頁(yè)面顯示的排版方法及裝置。
背景技術(shù):
目前,相關(guān)技術(shù)中的瀏覽器大都通過(guò)集成一套網(wǎng)絡(luò)應(yīng)用(WebApp)框架,利用注入計(jì)算機(jī)腳本語(yǔ)言(例如JS)達(dá)到修改網(wǎng)頁(yè)顯示效果的目的,例如uc瀏覽的論壇模式,其通常采用的做法是生成一個(gè)論壇模式的頁(yè)面,并隱藏原有網(wǎng)頁(yè)頁(yè)面。然而,該做法存在著一定的問(wèn)題。因?yàn)樵W(wǎng)頁(yè)可能會(huì)運(yùn)行著一些JS代碼,這些JS代碼通過(guò)某些事件或定時(shí)器觸發(fā),并最終可能在頁(yè)面上生成一些其他的元素,影響了論壇模式頁(yè)面的展示效果,從而影響用戶的瀏覽體驗(yàn)。圖I是根據(jù)相關(guān)技術(shù)的在移動(dòng)終端上顯示天涯論壇頁(yè)面的示意圖。如圖I所示,在瀏覽器中生成了論壇模式的頁(yè)面,并隱藏了原天 涯論壇的網(wǎng)頁(yè)頁(yè)面后,天涯論壇原有網(wǎng)頁(yè)頁(yè)面的一些JS會(huì)生成一些新的超文本標(biāo)記語(yǔ)言(HTML)元素,例如頁(yè)面底部出現(xiàn)的導(dǎo)航欄。由于這些元素的JS是通過(guò)定時(shí)器觸發(fā)的,因此可能在我們注入的JS執(zhí)行完后執(zhí)行。這時(shí),雖然我們隱藏了其他的HTML元素,但是它們新創(chuàng)建的HTML元素我們已經(jīng)無(wú)法隱藏。即使不是新創(chuàng)建HTML元素,他們也可能把我們隱藏的原頁(yè)面元素又重新顯示出來(lái)。并且,這些元素的屬性列表里已經(jīng)預(yù)先規(guī)定了相關(guān)屬性,而這些屬性又具有更高的優(yōu)先級(jí),因而無(wú)法使用級(jí)聯(lián)樣式表(CSS)對(duì)它進(jìn)行屏蔽。若通過(guò)刪除這些元素的JS以避免上述情況,又可能會(huì)導(dǎo)致網(wǎng)頁(yè)功能不健全或者信息不完整等負(fù)面效果。由于這些原本應(yīng)該隱藏的元素出現(xiàn)在瀏覽器的頁(yè)面上,導(dǎo)致原本清爽的論壇模式頁(yè)面增加了一些其他的干擾元素,用戶瀏覽網(wǎng)頁(yè)的舒適度明顯降低。
發(fā)明內(nèi)容
本發(fā)明提供了一種頁(yè)面顯示的排版方法及裝置,以至少解決相關(guān)技術(shù)中利用注入JS代碼對(duì)頁(yè)面進(jìn)行排版時(shí)無(wú)法避免出現(xiàn)干擾元素影響頁(yè)面顯示效果的問(wèn)題。根據(jù)本發(fā)明的一個(gè)方面,提供了一種頁(yè)面顯示的排版方法。根據(jù)本發(fā)明的頁(yè)面顯示的排版方法包括頁(yè)面解析器接收來(lái)自于目標(biāo)頁(yè)面的文本,其中,該文本包括目標(biāo)頁(yè)面中按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn);頁(yè)面解析器對(duì)文本中的按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行解析,在獲取到文檔結(jié)束消息后,通過(guò)第一預(yù)定調(diào)用接口調(diào)用與該第一預(yù)定調(diào)用接口對(duì)應(yīng)的第一預(yù)定擴(kuò)展程序?qū)σ呀?jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版,其中,第一預(yù)定調(diào)用接口和第一預(yù)定擴(kuò)展程序配置在瀏覽器中。優(yōu)選地,第一預(yù)定調(diào)用接口為預(yù)先編寫(xiě)的調(diào)用函數(shù),其中,通過(guò)調(diào)用函數(shù)調(diào)用第一預(yù)定擴(kuò)展程序,第一預(yù)定擴(kuò)展程序用于確定各個(gè)節(jié)點(diǎn)的重新排版方式。優(yōu)選地,第一預(yù)定調(diào)用接口為JS接口。優(yōu)選地,調(diào)用與該第一預(yù)定調(diào)用接口對(duì)應(yīng)的第一預(yù)定擴(kuò)展程序?qū)Ξ?dāng)前已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版包括根據(jù)第一預(yù)定擴(kuò)展程序確定待重新排版的節(jié)點(diǎn),并隱藏已經(jīng)按照預(yù)設(shè)排版方式進(jìn)行排版的各個(gè)節(jié)點(diǎn)中除待重新排版的節(jié)點(diǎn)之外的其他節(jié)點(diǎn);對(duì)目標(biāo)頁(yè)面進(jìn)行重新排版。優(yōu)選地,根據(jù)第一預(yù)定擴(kuò)展程序確定待重新排版的節(jié)點(diǎn),并隱藏已經(jīng)按照預(yù)設(shè)排版方式進(jìn)行排版的各個(gè)節(jié)點(diǎn)中除待重新排版的節(jié)點(diǎn)之外的其他節(jié)點(diǎn)包括為已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)設(shè)置排版標(biāo)識(shí),其中,將確定的待重新排版的節(jié)點(diǎn)的排版標(biāo)識(shí)設(shè)置為第一預(yù)定值,并將已經(jīng)按照預(yù)設(shè)排版方式進(jìn)行排版的各個(gè)節(jié)點(diǎn)中除待重新排版的節(jié)點(diǎn)之外的其他節(jié)點(diǎn)的排版標(biāo)識(shí)設(shè)置為第二預(yù)定值;對(duì)目標(biāo)頁(yè)面進(jìn)行重新排版包括依次對(duì)已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)的排版標(biāo)識(shí)進(jìn)行判斷;對(duì)排版標(biāo)識(shí)為第一預(yù)定值的節(jié)點(diǎn)進(jìn)行重新排版。優(yōu)選地,在調(diào)用與該第一預(yù)定調(diào)用接口對(duì)應(yīng)的第一預(yù)定擴(kuò)展程序?qū)σ呀?jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版之后,還包括頁(yè)面解析器在解析到第二預(yù)定調(diào)用接口時(shí),調(diào)用與該第二預(yù)定調(diào)用接口對(duì)應(yīng)的第二預(yù)定擴(kuò)展程序重新顯示當(dāng)前頁(yè)面內(nèi)已經(jīng)隱藏的部分或者全部節(jié)點(diǎn)。 根據(jù)本發(fā)明的另一方面,提供了一種頁(yè)面顯示的排版裝置。根據(jù)本發(fā)明的頁(yè)面顯示的排版裝置包括接收模塊,用于接收來(lái)自于目標(biāo)頁(yè)面的文本,其中,該文本包括目標(biāo)頁(yè)面中按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn);排版模塊,用于對(duì)文本中的按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行解析,在獲取到文檔結(jié)束消息后,通過(guò)第一預(yù)定調(diào)用接口調(diào)用與該第一預(yù)定調(diào)用接口對(duì)應(yīng)的第一預(yù)定擴(kuò)展程序?qū)σ呀?jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版,其中,第一預(yù)定調(diào)用接口和第一預(yù)定擴(kuò)展程序配置在瀏覽器中。優(yōu)選地,排版模塊包括處理單元,用于根據(jù)第一預(yù)定擴(kuò)展程序確定待重新排版的節(jié)點(diǎn),并隱藏已經(jīng)按照預(yù)設(shè)排版方式進(jìn)行排版的各個(gè)節(jié)點(diǎn)中除待重新排版的節(jié)點(diǎn)之外的其他節(jié)點(diǎn);排版單元,用于對(duì)目標(biāo)頁(yè)面進(jìn)行重新排版。優(yōu)選地,處理單元包括設(shè)置單元,用于為已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)設(shè)置排版標(biāo)識(shí),其中,將確定的待重新排版的節(jié)點(diǎn)的排版標(biāo)識(shí)設(shè)置為第一預(yù)定值,并將已經(jīng)按照預(yù)設(shè)排版方式進(jìn)行排版的各個(gè)節(jié)點(diǎn)中除待重新排版的節(jié)點(diǎn)之外的其他節(jié)點(diǎn)的排版標(biāo)識(shí)設(shè)置為第二預(yù)定值;排版單元包括判斷單元,用于依次對(duì)已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)的排版標(biāo)識(shí)進(jìn)行判斷;執(zhí)行單元,用于對(duì)排版標(biāo)識(shí)為第一預(yù)定值的節(jié)點(diǎn)進(jìn)行重新排版。優(yōu)選地,上述裝置還包括顯示模塊,用于在解析到第二預(yù)定調(diào)用接口時(shí),調(diào)用與該第二預(yù)定調(diào)用接口對(duì)應(yīng)的第二預(yù)定擴(kuò)展程序重新顯示當(dāng)前頁(yè)面內(nèi)已經(jīng)隱藏的部分或者全部節(jié)點(diǎn)。通過(guò)本發(fā)明,采用在目標(biāo)頁(yè)面的文本中插入第一預(yù)定調(diào)用接口,在頁(yè)面解析器解析到該第一預(yù)定調(diào)用接口時(shí),調(diào)用與該第一預(yù)定調(diào)用接口對(duì)應(yīng)的擴(kuò)展程序,通過(guò)按照擴(kuò)展程序設(shè)定的顯示方式對(duì)已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版,解決了相關(guān)技術(shù)中利用注入JS代碼對(duì)頁(yè)面進(jìn)行排版時(shí)無(wú)法避免出現(xiàn)干擾元素影響頁(yè)面顯示效果的問(wèn)題,進(jìn)而避免了顯示頁(yè)面上出現(xiàn)干擾元素,提高了用戶瀏覽網(wǎng)頁(yè)的舒適度。
此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中圖I是根據(jù)相關(guān)技術(shù)的在移動(dòng)終端上顯示天涯論壇頁(yè)面的示意圖;圖2是根據(jù)本發(fā)明實(shí)施例的頁(yè)面顯示的排版方法的流程圖;圖3是根據(jù)本發(fā)明優(yōu)選實(shí)施例的頁(yè)面顯示的排版方法的流程圖;圖4是根據(jù)本發(fā)明優(yōu)選實(shí)施例的重新排版后的天涯論壇顯示頁(yè)面的示意圖;圖5是根據(jù)本發(fā)明實(shí)施例的頁(yè)面顯示的排版裝置的結(jié)構(gòu)框圖;以及圖6是根據(jù)本發(fā)明優(yōu)選實(shí)施例的頁(yè)面顯示的排版裝置的結(jié)構(gòu)框圖。
具體實(shí)施例方式下文中將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。圖2是根據(jù)本發(fā)明實(shí)施例的頁(yè)面顯示的排版方法的流程圖。如圖2所示,該方法可以包括以下步驟步驟S202 :頁(yè)面解析器接收來(lái)自于目標(biāo)頁(yè)面的文本,其中,該文本包括目標(biāo)頁(yè)面中按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn);步驟S204 :頁(yè)面解析器對(duì)文本中的按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行解析,在獲取到文檔結(jié)束消息后,通過(guò)第一預(yù)定調(diào)用接口調(diào)用與該第一預(yù)定調(diào)用接口對(duì)應(yīng)的第一預(yù)定擴(kuò)展程序?qū)σ呀?jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版,其中,第一預(yù)定調(diào)用接口和第一預(yù)定擴(kuò)展程序配置在瀏覽器中。相關(guān)技術(shù)中,利用注入JS代碼對(duì)頁(yè)面進(jìn)行排版時(shí),無(wú)法避免出現(xiàn)干擾元素,從而影響頁(yè)面的顯示效果。采用如圖2所示的方法,預(yù)先在本地瀏覽器的客戶端中新增一個(gè)第一預(yù)定調(diào)用接口,并對(duì)應(yīng)該第一預(yù)定調(diào)用接口配置第一預(yù)定擴(kuò)展程序,該第一預(yù)定擴(kuò)展程序確定了各個(gè)節(jié)點(diǎn)的重新排版方式。當(dāng)頁(yè)面解析器解析到該第一預(yù)定調(diào)用接口時(shí),調(diào)用與該第一預(yù)定調(diào)用接口對(duì)應(yīng)的擴(kuò)展程序,通過(guò)按照擴(kuò)展程序設(shè)定的顯示方式對(duì)已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版,解決了相關(guān)技術(shù)中利用注入JS代碼對(duì)頁(yè)面進(jìn)行排版時(shí)無(wú)法避免出現(xiàn)干擾元素影響頁(yè)面顯示效果的問(wèn)題,進(jìn)而避免了顯示頁(yè)面上出現(xiàn)干擾元素,提高了用戶瀏覽網(wǎng)頁(yè)的舒適度。在優(yōu)選實(shí)施過(guò)程中,上述第一預(yù)定調(diào)用接口為預(yù)先編寫(xiě)的調(diào)用函數(shù),其中,通過(guò)調(diào)用函數(shù)調(diào)用第一預(yù)定擴(kuò)展程序,第一預(yù)定擴(kuò)展程序用于確定各個(gè)節(jié)點(diǎn)的重新排版方式。在優(yōu)選實(shí)施過(guò)程中,上述第一預(yù)定調(diào)用接口可以為但不限于JS接口。在上述步驟S204中,調(diào)用與該第一預(yù)定調(diào)用接口對(duì)應(yīng)的第一預(yù)定擴(kuò)展程序?qū)Ξ?dāng)前已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版可以包括以下處理步驟SI :根據(jù)第一預(yù)定擴(kuò)展程序確定待重新排版的節(jié)點(diǎn),并隱藏已經(jīng)按照預(yù)設(shè)排版方式進(jìn)行排版的各個(gè)節(jié)點(diǎn)中除待重新排版的節(jié)點(diǎn)之外的其他節(jié)點(diǎn)。步驟S2 :對(duì)目標(biāo)頁(yè)面進(jìn)行重新排版。通過(guò)調(diào)用擴(kuò)展程序可以讓瀏覽器只顯示某個(gè)或某些節(jié)點(diǎn),而讓其他的節(jié)點(diǎn)均被隱藏。由此,即使存在可以通過(guò)定時(shí)器或其他方式觸發(fā)的JS,都無(wú)法對(duì)已經(jīng)生成的目標(biāo)頁(yè)面造成影響。假設(shè)有A、B、C三個(gè)節(jié)點(diǎn)已經(jīng)按照預(yù)設(shè)的排版方式進(jìn)行顯示,當(dāng)頁(yè)面解析器解析到第一預(yù)定調(diào)用接口時(shí),調(diào)用第一預(yù)定擴(kuò)展程序,其中,第一預(yù)定擴(kuò)展程序的設(shè)置為對(duì)A節(jié)點(diǎn)和B節(jié)點(diǎn)進(jìn)行重新排版。此時(shí),瀏覽器會(huì)根據(jù)第一預(yù)定擴(kuò)展程序的設(shè)置對(duì)目標(biāo)頁(yè)面中的A節(jié)點(diǎn)和B節(jié)點(diǎn)進(jìn)行重新排版,而將C節(jié)點(diǎn)進(jìn)行隱藏。在上述步驟SI中,根據(jù)第一預(yù)定擴(kuò)展程序確定待重新排版的節(jié)點(diǎn),并隱藏已經(jīng)按照預(yù)設(shè)排版方式進(jìn)行排版的各個(gè)節(jié)點(diǎn)中除待重新排版的節(jié)點(diǎn)之外的其他節(jié)點(diǎn)可以包括以下操作為已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)設(shè)置排版標(biāo)識(shí),其中,將確定的待重新排版的節(jié)點(diǎn)的排版標(biāo)識(shí)設(shè)置為第一預(yù)定值,并將已經(jīng)按照預(yù)設(shè)排版方式進(jìn)行排版的各個(gè)節(jié)點(diǎn)中除待重新排版的節(jié)點(diǎn)之外的其他節(jié)點(diǎn)的排版標(biāo)識(shí)設(shè)置為第二預(yù)定值。 在本發(fā)明的一個(gè)實(shí)施例中,可以為已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)設(shè)置排版標(biāo)識(shí),通過(guò)各個(gè)節(jié)點(diǎn)的排版標(biāo)識(shí)確定各個(gè)節(jié)點(diǎn)中哪些節(jié)點(diǎn)需要重新排版,而又有哪些節(jié)點(diǎn)需要被隱藏。當(dāng)節(jié)點(diǎn)的排版標(biāo)識(shí)為第一預(yù)定值(如true)時(shí),表示該節(jié)點(diǎn)需要進(jìn)行排版;當(dāng)節(jié)點(diǎn)的排版標(biāo)識(shí)為第二預(yù)定值(如false)時(shí),表示該節(jié)點(diǎn)需要被隱藏。在上述步驟S2中,對(duì)目標(biāo)頁(yè)面進(jìn)行重新排版可以包括以下操作步驟S21 :依次對(duì)已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)的排版標(biāo)識(shí)進(jìn)行判斷;步驟S22 :對(duì)排版標(biāo)識(shí)為第一預(yù)定值的節(jié)點(diǎn)進(jìn)行重新排版。在本發(fā)明的另一個(gè)實(shí)施例中,在排版流程中插入一些判斷,根據(jù)各個(gè)節(jié)點(diǎn)的排版標(biāo)識(shí)的取值判斷某個(gè)節(jié)點(diǎn)是否需要排版。只有在節(jié)點(diǎn)的排版標(biāo)識(shí)為第一預(yù)定值時(shí),才對(duì)該節(jié)點(diǎn)進(jìn)行排版。此外,在上述步驟S204,在調(diào)用與該第一預(yù)定調(diào)用接口對(duì)應(yīng)的第一預(yù)定擴(kuò)展程序?qū)σ呀?jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版之后,還可以包括以下步驟步驟S206 :頁(yè)面解析器在解析到第二預(yù)定調(diào)用接口(例如ucweb.ui. unsetRenderElements)時(shí),調(diào)用與該第二預(yù)定調(diào)用接口對(duì)應(yīng)的第二預(yù)定擴(kuò)展程序重新顯示當(dāng)前頁(yè)面內(nèi)已經(jīng)隱藏的部分或者全部節(jié)點(diǎn)。在本發(fā)明的再一個(gè)實(shí)施例中,所述第一預(yù)定調(diào)用接口為一 JS接口對(duì)象,在瀏覽器的JS中新增一個(gè)JS接口對(duì)象,并對(duì)應(yīng)該JS接口對(duì)象配置第一預(yù)定擴(kuò)展程序,假設(shè)將該JS接口對(duì)象取名為“ucweb. ui”,可以通過(guò)該接口來(lái)控制瀏覽器的用戶界面(User Interface,簡(jiǎn)稱為UI),為該JS接口對(duì)象添加相應(yīng)的函數(shù)和屬性,通過(guò)調(diào)用該函數(shù)實(shí)現(xiàn)調(diào)用所述第一預(yù)定擴(kuò)展程序。假設(shè)其中的一個(gè)函數(shù)名為“renderElements”,可以通過(guò)調(diào)用這個(gè)函數(shù),就可以更改瀏覽器的排版方式,讓瀏覽器只排版參數(shù)指定的節(jié)點(diǎn),該參數(shù)需要包括待排版的節(jié)點(diǎn)對(duì)象的集合(可以是一個(gè),也可以是多個(gè))。該新增的JS接口,可以利用JS代碼,通過(guò)層層調(diào)用,最終達(dá)到改變?yōu)g覽器排版方式的效果。該接口可以給WebApp的Content Script調(diào)用。Web App開(kāi)發(fā)者通過(guò)使用新增的JS接口,利用Web App框架的內(nèi)容腳本(ContentScript),能在網(wǎng)頁(yè)加載的文檔結(jié)束(D0CUMENT_END)階段,通知各個(gè)Web App相應(yīng)的注冊(cè)JS文件??梢岳眠@些JS文件設(shè)置排版的節(jié)點(diǎn)。圖3是該優(yōu)選實(shí)施例的頁(yè)面顯示的排版方法的流程圖。如圖3所示,在該優(yōu)選實(shí)施例中,可以在展示瀏覽器網(wǎng)頁(yè)頁(yè)面時(shí),利用瀏覽器新增的JS接口,從而控制瀏覽器排版的方式。需要說(shuō)明的是,瀏覽器內(nèi)核負(fù)責(zé)對(duì)網(wǎng)頁(yè)進(jìn)行加載、顯示、以及JS的執(zhí)行的部分,是瀏覽器的核心,包括JS引擎以及排版渲染引擎JS前端是指網(wǎng)頁(yè)中的JS代碼JS引擎是指瀏覽器中與JS執(zhí)行相關(guān)的模塊。該優(yōu)選實(shí)施例可以包括以下處理步驟步驟S302 :瀏覽器內(nèi)核在JS引擎中擴(kuò)展一個(gè)JS接口對(duì)象,并在這個(gè)JS接口對(duì)象中添加一個(gè)JS子對(duì)象;步驟S304 :瀏覽器內(nèi)核在這個(gè)JS子對(duì)象中添加UI操作相關(guān)的函數(shù),通過(guò)綁定(Bindings)模塊將JS映射到內(nèi)核,以完成對(duì)內(nèi)核中與排版顯示相關(guān)部分的調(diào)用,這樣就能通過(guò)JS函數(shù)調(diào)到內(nèi)核的排版顯示模塊;步驟S306 :當(dāng)頁(yè)面解析器解析到JS接口改變排版節(jié)點(diǎn)(即調(diào)用ucweb. ui. renderElements)時(shí),JS前端會(huì)直接通知瀏覽器內(nèi)核。步驟S308 :瀏覽器內(nèi)核在文檔(document)內(nèi)預(yù)先增加一個(gè)變量m_inSingleLayout,用于判定是否已進(jìn)入單排版模式(即只排版一個(gè)節(jié)點(diǎn)的模式),其中,true代表已經(jīng)進(jìn)入單排版模式,false代表沒(méi)有進(jìn)入單排版模式,默認(rèn)設(shè)置為false。當(dāng)瀏覽器內(nèi)核接收到JS前端的通知后,將document的m_inSingleLayout設(shè)置為true,并記錄下需要排版的節(jié)點(diǎn)nusingleRender(設(shè)置只排版某些節(jié)點(diǎn)的JS函數(shù)接口的參數(shù)存入的就是需要排版的節(jié)點(diǎn))。步驟S310 :瀏覽器內(nèi)核遍歷整個(gè)render樹(shù),然后設(shè)置所有待排版的對(duì)象(RenderObject)的 m_alIowLayout = false,其中,瀏覽器內(nèi)核在每個(gè) RenderObject 內(nèi)新增一個(gè)排版開(kāi)*m_alIowLayout,用于判定是否允許當(dāng)前節(jié)點(diǎn)進(jìn)行排版,若m_alIowLayout=ture,則表示當(dāng)前節(jié)點(diǎn)需要進(jìn)行排版;若m_alIowLayout = false,則表示當(dāng)前節(jié)點(diǎn)不需要進(jìn)行排版。步驟S312 :瀏覽器內(nèi)核再次遍歷需要排版的節(jié)點(diǎn)的RenderObject,并將該RenderObject的所有子節(jié)點(diǎn)、該RenderObject的所有祖先節(jié)點(diǎn)以及該RenderObject節(jié)點(diǎn)本身的m_allowLayout都設(shè)為true,表示該些節(jié)點(diǎn)需要進(jìn)行排版。在排版流程中插入一些判斷,根據(jù)m_allowLayout的取值判斷某個(gè)節(jié)點(diǎn)是否需要排版。當(dāng)節(jié)點(diǎn)m_allowLayout的屬性值為true時(shí),才對(duì)該節(jié)點(diǎn)進(jìn)行排版。如果后續(xù)有新的節(jié)點(diǎn)插入到dom樹(shù),并生成對(duì)應(yīng)的RenderObject時(shí),先判斷該節(jié)點(diǎn)是否屬于m_singleRender的子節(jié)點(diǎn)、祖先節(jié)點(diǎn),如果是則設(shè)置該節(jié)點(diǎn)的m_allowLayout的屬性值為true,否則置為false。優(yōu)選地,在調(diào)用與該JS接口對(duì)象對(duì)應(yīng)的第一預(yù)定擴(kuò)展程序?qū)σ呀?jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版之后,還可以包括以下步驟頁(yè)面解析器在解析到另一 JS接口對(duì)象,該另一 JS接口對(duì)象也被配置于瀏覽器中,并對(duì)應(yīng)該另一 JS接口對(duì)象配置第二預(yù)定擴(kuò)展程序,假設(shè)該另一 JS接口對(duì)象被添加的一個(gè)函數(shù)名為“renderElements”,可以通過(guò)調(diào)用這個(gè)函數(shù),調(diào)用該第二預(yù)定擴(kuò)展程序,就可以達(dá)到解除某些排版節(jié)點(diǎn)的顯示,當(dāng)解除了所有的節(jié)點(diǎn)的排版之后,就不再隱藏所有其他的網(wǎng)頁(yè)元素了,會(huì)將所有的節(jié)點(diǎn)都重新顯示出來(lái)。該步驟具體為,JS前端將函數(shù)調(diào)用的消息通知給瀏覽器內(nèi)核。瀏覽器內(nèi)核查找出“解除設(shè)置只排版節(jié)點(diǎn)”的RenderObject,并遍歷其他的RenderOb ject,確認(rèn)是否存在非自身,非祖先、也非子節(jié)點(diǎn)的m_allowLayout的屬性值為true。如果存在,則將“解除設(shè)置只排版節(jié)點(diǎn)”的RenderObject的m_allowLayout屬性設(shè)置為false ;如果不存在,則將document的m_inSingleLayout設(shè)置為false。瀏覽器內(nèi)核遍歷整個(gè)render樹(shù),然后將所有RenderObject的m_alIowLayout設(shè)置為true。瀏覽器內(nèi)核重新排版整個(gè)頁(yè)面。圖4是根據(jù)本發(fā)明重新排版后的天涯論壇顯示頁(yè)面的示意圖。如圖4所示,瀏覽器僅排版指定的節(jié)點(diǎn)。雖然那個(gè)導(dǎo)航欄是在后期由JS生成的,但是通過(guò)設(shè)定第一預(yù)定調(diào)用接口,調(diào)用第一預(yù)定擴(kuò)展程序?qū)?yè)面進(jìn)行重新排版后,當(dāng)前論壇模式的頁(yè)面上將不再顯示多余的干擾元素。此外,根據(jù)本發(fā)明可以實(shí)現(xiàn)一個(gè)WebApp查圖程序,能在任意的網(wǎng)頁(yè)上以類似windows圖片查看器的效果查看當(dāng)前網(wǎng)頁(yè)上的所有圖片。相關(guān)技術(shù)中,當(dāng)啟動(dòng)該查看器之后,會(huì)隱藏原有頁(yè)面,并生成一個(gè)新的元素讓該元素顯示查圖程序。然而,一個(gè)后期生成的廣告元素可能突然加載完成并在圖片查看器的上方顯示,這樣就造成了很壞的體驗(yàn)效果。采用本發(fā)明的技術(shù)方案,讓瀏覽器只排版圖片查看器,由此,不僅不需要手動(dòng)去隱藏網(wǎng)頁(yè)的 所有元素,也不會(huì)出現(xiàn)顯示頁(yè)面被廣告遮避的問(wèn)題。圖5是根據(jù)本發(fā)明實(shí)施例的頁(yè)面顯示的排版裝置的結(jié)構(gòu)框圖。如圖5所示,該頁(yè)面顯示的排版裝置可以包括接收模塊10,用于接收來(lái)自于目標(biāo)頁(yè)面的文本,其中,該文本包括目標(biāo)頁(yè)面中按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn);排版模塊20,用于對(duì)文本中的按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行解析,在獲取到文檔結(jié)束消息后,通過(guò)第一預(yù)定調(diào)用接口調(diào)用與該第一預(yù)定調(diào)用接口對(duì)應(yīng)的第一預(yù)定擴(kuò)展程序?qū)σ呀?jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版,其中,第一預(yù)定調(diào)用接口和第一預(yù)定擴(kuò)展程序配置在瀏覽器中。采用如圖5所示的裝置,解決了相關(guān)技術(shù)中利用注入JS代碼對(duì)頁(yè)面進(jìn)行排版時(shí)無(wú)法避免出現(xiàn)干擾元素影響頁(yè)面顯示效果的問(wèn)題,進(jìn)而避免了顯示頁(yè)面上出現(xiàn)干擾元素,提高了用戶瀏覽網(wǎng)頁(yè)的舒適度。優(yōu)選地,如圖6所示,上述排版模塊20可以包括處理單元200,用于根據(jù)第一預(yù)定擴(kuò)展程序確定待重新排版的節(jié)點(diǎn),并隱藏已經(jīng)按照預(yù)設(shè)排版方式進(jìn)行排版的各個(gè)節(jié)點(diǎn)中除待重新排版的節(jié)點(diǎn)之外的其他節(jié)點(diǎn);排版單元202,用于對(duì)目標(biāo)頁(yè)面進(jìn)行重新排版。優(yōu)選地,如圖6所示,上述處理單元200可以包括設(shè)置單元2000,用于為已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)設(shè)置排版標(biāo)識(shí),其中,將確定的待重新排版的節(jié)點(diǎn)的排版標(biāo)識(shí)設(shè)置為第一預(yù)定值,并將已經(jīng)按照預(yù)設(shè)排版方式進(jìn)行排版的各個(gè)節(jié)點(diǎn)中除待重新排版的節(jié)點(diǎn)之外的其他節(jié)點(diǎn)的排版標(biāo)識(shí)設(shè)置為第二預(yù)定值。優(yōu)選地,如圖6所示,上述排版單元202可以包括判斷單元2020,用于依次對(duì)已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)的排版標(biāo)識(shí)進(jìn)行判斷;執(zhí)行單元2022,用于對(duì)排版標(biāo)識(shí)為第一預(yù)定值的節(jié)點(diǎn)進(jìn)行重新排版。優(yōu)選地,如圖6所示,上述裝置還可以包括顯示模塊30,用于在解析到第二預(yù)定調(diào)用接口時(shí),調(diào)用與該第二預(yù)定調(diào)用接口對(duì)應(yīng)的第二預(yù)定擴(kuò)展程序重新顯示當(dāng)前頁(yè)面內(nèi)已經(jīng)隱藏的部分或者全部節(jié)點(diǎn)。需要說(shuō)明的是,圖5和圖6中所示的各模塊以及各單元之間相互作用的優(yōu)選工作方式可以參見(jiàn)圖2至圖4所示的優(yōu)選實(shí)施例,此處不再贅述。
從以上的描述中,可以看出,上述實(shí)施例實(shí)現(xiàn)了如下技術(shù)效果(需要說(shuō)明的是這些效果是某些優(yōu)選實(shí)施例可以達(dá)到的效果)讓瀏覽器只排版指定的節(jié)點(diǎn),以達(dá)到不被原頁(yè)面元素干擾的目的。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來(lái)執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來(lái)實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種頁(yè)面顯示的排版方法,其特征在于,包括 頁(yè)面解析器接收來(lái)自于目標(biāo)頁(yè)面的文本,其中,該文本包括所述目標(biāo)頁(yè)面中按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn); 所述頁(yè)面解析器對(duì)所述文本中的按照所述預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行解析,在獲取到文檔結(jié)束消息后,通過(guò)第一預(yù)定調(diào)用接口調(diào)用與該第一預(yù)定調(diào)用接口對(duì)應(yīng)的第一預(yù)定擴(kuò)展程序?qū)σ呀?jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版,其中,所述第一預(yù)定調(diào)用接口和所述第一預(yù)定擴(kuò)展程序配置在瀏覽器中。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述第一預(yù)定調(diào)用接口為預(yù)先編寫(xiě)的調(diào)用函數(shù),其中,通過(guò)所述調(diào)用函數(shù)調(diào)用所述第一預(yù)定擴(kuò)展程序,所述第一預(yù)定擴(kuò)展程序用于確定所述各個(gè)節(jié)點(diǎn)的重新排版方式。
3.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述第一預(yù)定調(diào)用接口為JS接口。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,調(diào)用與該第一預(yù)定調(diào)用接口對(duì)應(yīng)的第一預(yù)定擴(kuò)展程序?qū)Ξ?dāng)前已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版包括 根據(jù)所述第一預(yù)定擴(kuò)展程序確定待重新排版的節(jié)點(diǎn),并隱藏所述已經(jīng)按照預(yù)設(shè)排版方式進(jìn)行排版的各個(gè)節(jié)點(diǎn)中除所述待重新排版的節(jié)點(diǎn)之外的其他節(jié)點(diǎn); 對(duì)所述目標(biāo)頁(yè)面進(jìn)行重新排版。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于, 根據(jù)所述第一預(yù)定擴(kuò)展程序確定待重新排版的節(jié)點(diǎn),并隱藏所述已經(jīng)按照預(yù)設(shè)排版方式進(jìn)行排版的各個(gè)節(jié)點(diǎn)中除所述待重新排版的節(jié)點(diǎn)之外的其他節(jié)點(diǎn)包括 為已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)設(shè)置排版標(biāo)識(shí),其中,將所述確定的待重新排版的節(jié)點(diǎn)的所述排版標(biāo)識(shí)設(shè)置為第一預(yù)定值,并將所述已經(jīng)按照預(yù)設(shè)排版方式進(jìn)行排版的各個(gè)節(jié)點(diǎn)中除所述待重新排版的節(jié)點(diǎn)之外的其他節(jié)點(diǎn)的所述排版標(biāo)識(shí)設(shè)置為第二預(yù)定值; 對(duì)所述目標(biāo)頁(yè)面進(jìn)行重新排版包括 依次對(duì)所述已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)的排版標(biāo)識(shí)進(jìn)行判斷; 對(duì)所述排版標(biāo)識(shí)為所述第一預(yù)定值的節(jié)點(diǎn)進(jìn)行重新排版。
6.根據(jù)權(quán)利要求I所述的方法,其特征在于,在調(diào)用與該第一預(yù)定調(diào)用接口對(duì)應(yīng)的第一預(yù)定擴(kuò)展程序?qū)σ呀?jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版之后,還包括 所述頁(yè)面解析器在解析到第二預(yù)定調(diào)用接口時(shí),調(diào)用與該第二預(yù)定調(diào)用接口對(duì)應(yīng)的第二預(yù)定擴(kuò)展程序重新顯示當(dāng)前頁(yè)面內(nèi)已經(jīng)隱藏的部分或者全部節(jié)點(diǎn)。
7.一種頁(yè)面顯示的排版裝置,其特征在于,包括 接收模塊,用于接收來(lái)自于目標(biāo)頁(yè)面的文本,其中,該文本包括所述目標(biāo)頁(yè)面中按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn); 排版模塊,用于對(duì)所述文本中的按照所述預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行解析,在獲取到文檔結(jié)束消息后,通過(guò)第一預(yù)定調(diào)用接口調(diào)用與該第一預(yù)定調(diào)用接口對(duì)應(yīng)的第一預(yù)定擴(kuò)展程序?qū)σ呀?jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版,其中,所述第一預(yù)定調(diào)用接口和所述第一預(yù)定擴(kuò)展程序配置在瀏覽器中。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述排版模塊包括 處理單元,用于根據(jù)所述第一預(yù)定擴(kuò)展程序確定待重新排版的節(jié)點(diǎn),并隱藏所述已經(jīng)按照預(yù)設(shè)排版方式進(jìn)行排版的各個(gè)節(jié)點(diǎn)中除所述待重新排版的節(jié)點(diǎn)之外的其他節(jié)點(diǎn); 排版單元,用于對(duì)所述目標(biāo)頁(yè)面進(jìn)行重新排版。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于, 所述處理單元包括 設(shè)置單元,用于為已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)設(shè)置排版標(biāo)識(shí),其中,將所述確定的待重新排版的節(jié)點(diǎn)的所述排版標(biāo)識(shí)設(shè)置為第一預(yù)定值,并將所述已經(jīng)按照預(yù)設(shè)排版方式進(jìn)行排版的各個(gè)節(jié)點(diǎn)中除所述待重新排版的節(jié)點(diǎn)之外的其他節(jié)點(diǎn)的所述排版標(biāo)識(shí)設(shè)置為第二預(yù)定值; 所述排版單元包括 判斷單元,用于依次對(duì)所述已經(jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)的排版標(biāo)識(shí)進(jìn)行判斷; 執(zhí)行單元,用于對(duì)所述排版標(biāo)識(shí)為所述第一預(yù)定值的節(jié)點(diǎn)進(jìn)行重新排版。
10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括 顯示模塊,用于在解析到第二預(yù)定調(diào)用接口時(shí),調(diào)用與該第二預(yù)定調(diào)用接口對(duì)應(yīng)的第二預(yù)定擴(kuò)展程序重新顯示當(dāng)前頁(yè)面內(nèi)已經(jīng)隱藏的部分或者全部節(jié)點(diǎn)。
全文摘要
本發(fā)明公開(kāi)了一種頁(yè)面顯示的排版方法及裝置,在上述方法中,頁(yè)面解析器接收來(lái)自于目標(biāo)頁(yè)面的文本,其中,該文本包括目標(biāo)頁(yè)面中按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn);頁(yè)面解析器對(duì)文本中的按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行解析,在獲取到文檔結(jié)束消息后,通過(guò)第一預(yù)定調(diào)用接口調(diào)用與該第一預(yù)定調(diào)用接口對(duì)應(yīng)的第一預(yù)定擴(kuò)展程序?qū)σ呀?jīng)按照預(yù)設(shè)排版方式設(shè)置的各個(gè)節(jié)點(diǎn)進(jìn)行重新排版,其中,第一預(yù)定調(diào)用接口和第一預(yù)定擴(kuò)展程序配置在瀏覽器中。根據(jù)本發(fā)明提供的技術(shù)方案,避免了顯示頁(yè)面上出現(xiàn)干擾元素,提高了用戶瀏覽網(wǎng)頁(yè)的舒適度。
文檔編號(hào)G06F17/30GK102831212SQ201210289330
公開(kāi)日2012年12月19日 申請(qǐng)日期2012年8月14日 優(yōu)先權(quán)日2012年8月14日
發(fā)明者梁捷, 俞永福, 何小鵬, 朱順炎, 馬妙魁 申請(qǐng)人:優(yōu)視科技有限公司