本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體而言,涉及一種網(wǎng)頁(yè)消息返回方法和一種網(wǎng)頁(yè)消息返回系統(tǒng)。
背景技術(shù):
在相關(guān)技術(shù)中,基于瀏覽器或者webview(網(wǎng)頁(yè)視圖)開(kāi)發(fā)的網(wǎng)頁(yè)應(yīng)用,在界面導(dǎo)航設(shè)計(jì)中,只能通過(guò)進(jìn)入新頁(yè)面來(lái)提示當(dāng)前頁(yè)面的處理結(jié)果,并只能在新頁(yè)面展示之前的操作結(jié)果。同時(shí),瀏覽器或者webview的歷史記錄只能不斷的增加,在提示業(yè)務(wù)完操作后,無(wú)法自動(dòng)返回到應(yīng)用的主界面。
另外,由于w3c定義的安全規(guī)范,瀏覽器或者webivew只允許Javascript(直譯式腳本語(yǔ)言)獲取當(dāng)前歷史記錄長(zhǎng)度,不允許Javascript程序獲取系統(tǒng)歷史記錄中每項(xiàng)的內(nèi)容,更不允許Javascript修改系統(tǒng)的歷史記錄長(zhǎng)度。所以,以傳統(tǒng)的計(jì)算機(jī)的網(wǎng)頁(yè)應(yīng)用設(shè)計(jì)方式無(wú)法達(dá)到移動(dòng)原生應(yīng)用導(dǎo)航的體驗(yàn)效果。
再者,頁(yè)面間的數(shù)據(jù)傳遞只能通過(guò)url的參數(shù)傳遞向前傳遞,如果頁(yè)面使用回退的方式返回主界面,那么瀏覽器或者webview是沒(méi)有提供相關(guān)機(jī)制的,在設(shè)計(jì)時(shí),如果網(wǎng)頁(yè)應(yīng)用使用業(yè)務(wù)強(qiáng)相關(guān)的參數(shù)傳遞又不具備通用性和可擴(kuò)展性,則十分不利于代碼的維護(hù)和復(fù)用。
目前,雖然返回事件監(jiān)聽(tīng)器和系統(tǒng)歷史記錄讀取都可以通過(guò)改變webview的nativie代碼來(lái)實(shí)現(xiàn),但這樣的處理無(wú)法實(shí)現(xiàn)功能模塊的移植,在不同的終端平臺(tái)下面需要修改出不同的webview控件,難以在通用的瀏覽器上面使用。
因此,如何提供一種高體驗(yàn)、低成本的網(wǎng)頁(yè)間的返回消息傳遞方式,成為目前亟待解決的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明正是基于上述問(wèn)題,提出了一種新的技術(shù)方案,可以提供一種高體驗(yàn)低成本的網(wǎng)頁(yè)間的返回消息傳遞方式。
有鑒于此,本發(fā)明的一方面提出了一種網(wǎng)頁(yè)消息返回方法,包括:根據(jù)接收到的業(yè)務(wù)請(qǐng)求,讀取源頁(yè)面和目標(biāo)頁(yè)面的歷史堆棧信息;根據(jù)讀取到的所述源頁(yè)面和所述目標(biāo)頁(yè)面的歷史堆棧信息,確定所述業(yè)務(wù)請(qǐng)求所請(qǐng)求的業(yè)務(wù)修改內(nèi)容;將所述業(yè)務(wù)修改內(nèi)容以消息的形式寫(xiě)入網(wǎng)頁(yè)應(yīng)用程序的預(yù)設(shè)消息鏈表中。
在該技術(shù)方案中,在接收到業(yè)務(wù)請(qǐng)求后,源頁(yè)面會(huì)確認(rèn)需要返回的目標(biāo)頁(yè)面,并通過(guò)源頁(yè)面和目標(biāo)頁(yè)面的歷史堆棧信息,確定返回目標(biāo)頁(yè)面的長(zhǎng)度,進(jìn)而將通過(guò)業(yè)務(wù)請(qǐng)求確認(rèn)的消息類(lèi)型和消息內(nèi)容等信息,插入到預(yù)設(shè)消息鏈表的消息隊(duì)列中,并根據(jù)返回目標(biāo)頁(yè)面的長(zhǎng)度,調(diào)用history.go(-n)語(yǔ)句執(zhí)行返回操作。通過(guò)本技術(shù)方案,可以通過(guò)源頁(yè)面和目標(biāo)頁(yè)面的歷史堆棧信息,確定兩者的距離,這個(gè)距離并不是物理意義上的距離,而是指源網(wǎng)頁(yè)經(jīng)多少層才生成目標(biāo)網(wǎng)頁(yè),通過(guò)預(yù)設(shè)消息鏈表中存儲(chǔ)的消息以及確定的兩者距離,可以方便快捷地從目標(biāo)網(wǎng)頁(yè)返回源網(wǎng)頁(yè),提升了用戶(hù)體驗(yàn),同時(shí),通過(guò)預(yù)設(shè)消息列表傳遞消息也避免了在不同終端的平臺(tái)、瀏覽器間修改網(wǎng)頁(yè)視圖控件的問(wèn)題,提升了網(wǎng)頁(yè)消息返回功能的通用性,節(jié)約了成本。
在上述技術(shù)方案中,優(yōu)選地,所述源頁(yè)面為所述目標(biāo)頁(yè)面的源頁(yè)面;以及在所述將所述業(yè)務(wù)修改內(nèi)容以消息的形式寫(xiě)入網(wǎng)頁(yè)應(yīng)用程序的預(yù)設(shè)消息鏈表中之后,還包括:通過(guò)所述目標(biāo)頁(yè)面從所述預(yù)設(shè)消息鏈表中讀取并處理所述消息。
在該技術(shù)方案中,源頁(yè)面可以直接將業(yè)務(wù)請(qǐng)求中改變的業(yè)務(wù)內(nèi)容以消息的形式寫(xiě)入預(yù)設(shè)消息鏈表,目標(biāo)頁(yè)面也可以直接從預(yù)設(shè)消息鏈表中讀取該消息,從而獲取到業(yè)務(wù)請(qǐng)求所請(qǐng)求變更的業(yè)務(wù)內(nèi)容,以便進(jìn)行相應(yīng)處理。通過(guò)本技術(shù)方案,可以避免網(wǎng)頁(yè)應(yīng)用程序中的頁(yè)面間的返回跳轉(zhuǎn)消息傳遞問(wèn)題,使用戶(hù)獲得類(lèi)原生應(yīng)用程序的導(dǎo)航體驗(yàn)效果,提升了用戶(hù)體驗(yàn),同時(shí),通過(guò)預(yù)設(shè)消息列表傳遞消息也避免了在不同終端的平臺(tái)、瀏覽器間修改網(wǎng)頁(yè)視圖控件的問(wèn)題,提升了網(wǎng)頁(yè)消息返回功能的通用性,節(jié)約了成本。其中,預(yù)設(shè)消息鏈表中的內(nèi)容包括但不限于消息源頁(yè)面名稱(chēng)、消息目標(biāo)頁(yè)面名稱(chēng)、消息類(lèi)型、消息的處理函數(shù)體。
在上述技術(shù)方案中,優(yōu)選地,還包括:根據(jù)接收到的記錄命令,為所述網(wǎng)頁(yè)應(yīng)用程序的每個(gè)頁(yè)面記錄歷史堆棧信息,并將所述每個(gè)頁(yè)面的所述歷史堆棧信息保存至所述網(wǎng)頁(yè)應(yīng)用程序的會(huì)話(huà)緩存中。
在該技術(shù)方案中,將網(wǎng)頁(yè)的歷史堆棧信息保存至網(wǎng)頁(yè)應(yīng)用程序的會(huì)話(huà)緩存中,從而可以方便地對(duì)網(wǎng)頁(yè)的歷史堆棧信息進(jìn)行讀取,解決了頁(yè)面返回過(guò)程中無(wú)法讀取或變動(dòng)網(wǎng)頁(yè)的歷史堆棧信息問(wèn)題,便于通過(guò)網(wǎng)頁(yè)的歷史堆棧信息與預(yù)設(shè)消息鏈表相結(jié)合完成消息返回傳遞。
在上述技術(shù)方案中,優(yōu)選地,所述讀取所述源頁(yè)面和所述目標(biāo)頁(yè)面的歷史堆棧信息,具體包括:檢測(cè)所述源頁(yè)面和所述目標(biāo)頁(yè)面是否都具有已記錄的所述歷史堆棧信息,其中,當(dāng)檢測(cè)結(jié)果為是時(shí),讀取所述源頁(yè)面和所述目標(biāo)頁(yè)面的已記錄的所述歷史堆棧信息,當(dāng)檢測(cè)結(jié)果為否時(shí),為所述源頁(yè)面和所述目標(biāo)頁(yè)面中不具有已記錄的所述歷史堆棧信息的頁(yè)面建立初始?xì)v史堆棧信息,并將所述初始?xì)v史堆棧信息保存至所述會(huì)話(huà)緩存中。
在該技術(shù)方案中,可以為不具有已記錄的歷史堆棧信息的頁(yè)面建立初始?xì)v史堆棧信息,以便通過(guò)頁(yè)面的歷史堆棧信息與預(yù)設(shè)消息鏈表相結(jié)合完成消息返回傳遞,從而提升網(wǎng)頁(yè)消息返回功能的通用性。
在上述技術(shù)方案中,優(yōu)選地,所述通過(guò)所述目標(biāo)頁(yè)面從所述預(yù)設(shè)消息鏈表中讀取并處理所述消息,包括:判斷所述目標(biāo)頁(yè)面的所述歷史堆棧信息的長(zhǎng)度是否小于系統(tǒng)歷史長(zhǎng)度,以供根據(jù)判斷結(jié)果確定是否更新所述目標(biāo)頁(yè)面的所述歷史堆棧信息;根據(jù)更新后的或無(wú)需更新的所述歷史堆棧信息,歷遍所述預(yù)設(shè)消息鏈表,以供讀取并處理存儲(chǔ)在所述預(yù)設(shè)消息鏈表的所述消息。
在該技術(shù)方案中,可以根據(jù)實(shí)際情況確定目標(biāo)頁(yè)面的歷史堆棧信息是否需要更新,以更好地適應(yīng)實(shí)際情況。另外,在獲得最新的歷史堆棧信息后,可以結(jié)合歷史堆棧信息與預(yù)設(shè)消息鏈表,將預(yù)設(shè)消息鏈表中的所有消息進(jìn)行歷遍以便返回源網(wǎng)頁(yè)。
在上述技術(shù)方案中,優(yōu)選地,所述根據(jù)判斷結(jié)果確定是否更新所述目標(biāo)頁(yè)面的所述歷史堆棧信息,具體包括:當(dāng)所述判斷結(jié)果為是時(shí),將所述目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)合并至所述目標(biāo)頁(yè)面的所述歷史堆棧信息,以更新所述歷史堆棧信息;當(dāng)所述判斷結(jié)果為否時(shí),獲取當(dāng)前的所述系統(tǒng)歷史長(zhǎng)度,并在當(dāng)前的所述系統(tǒng)歷史長(zhǎng)度的棧頂為所述目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)時(shí),刪除所述目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)后面的所有項(xiàng),否則,將所述目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)合并至所述目標(biāo)頁(yè)面的所述歷史堆棧信息,以更新所述歷史堆棧信息。
在該技術(shù)方案中,提供了更新歷史堆棧信息的具體方式,其通過(guò)將目標(biāo)頁(yè)面置于棧頂,使得頁(yè)面返回操作變得更加快捷簡(jiǎn)便,如果歷史堆棧信息不需要更新,則可以直接將目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)合并至歷史堆棧信息中,從而完成歷史堆棧信息更新,使得頁(yè)面返回操作變得更加快捷簡(jiǎn)便,提升用戶(hù)體驗(yàn)。
在上述技術(shù)方案中,優(yōu)選地,所述消息的類(lèi)型包括提示類(lèi)型、確認(rèn)類(lèi)型、參數(shù)傳遞類(lèi)型或信號(hào)量類(lèi)型。
在該技術(shù)方案中,消息的類(lèi)型包括但不限于提示類(lèi)型、確認(rèn)類(lèi)型、參數(shù)傳遞類(lèi)型或信號(hào)量類(lèi)型,多種消息的類(lèi)型使得將業(yè)務(wù)修改內(nèi)容寫(xiě)入網(wǎng)頁(yè)應(yīng)用程序的預(yù)設(shè)消息鏈表的方式多種多樣,便于適應(yīng)用戶(hù)的實(shí)際需求。
本發(fā)明的另一方面提出了一種網(wǎng)頁(yè)消息返回系統(tǒng),包括:讀取單元,根據(jù)接收到的業(yè)務(wù)請(qǐng)求,讀取源頁(yè)面和目標(biāo)頁(yè)面的歷史堆棧信息;消息確定單元,根據(jù)讀取到的所述源頁(yè)面和所述目標(biāo)頁(yè)面的歷史堆棧信息,確定所述業(yè)務(wù)請(qǐng)求所請(qǐng)求的業(yè)務(wù)修改內(nèi)容;鏈表更新單元,將所述業(yè)務(wù)修改內(nèi)容以消息的形式寫(xiě)入網(wǎng)頁(yè)應(yīng)用程序的預(yù)設(shè)消息鏈表中。
在該技術(shù)方案中,在接收到業(yè)務(wù)請(qǐng)求后,源頁(yè)面會(huì)確認(rèn)需要返回的目標(biāo)頁(yè)面,并通過(guò)源頁(yè)面和目標(biāo)頁(yè)面的歷史堆棧信息,確定返回目標(biāo)頁(yè)面的長(zhǎng)度,進(jìn)而將通過(guò)業(yè)務(wù)請(qǐng)求確認(rèn)的消息類(lèi)型和消息內(nèi)容等信息,插入到預(yù)設(shè)消息鏈表的消息隊(duì)列中,并根據(jù)返回目標(biāo)頁(yè)面的長(zhǎng)度,調(diào)用history.go(-n)語(yǔ)句執(zhí)行返回操作。通過(guò)本技術(shù)方案,可以通過(guò)源頁(yè)面和目標(biāo)頁(yè)面的歷史堆棧信息,確定兩者的距離,這個(gè)距離并不是物理意義上的距離,而是指源網(wǎng)頁(yè)經(jīng)多少層才生成目標(biāo)網(wǎng)頁(yè),通過(guò)預(yù)設(shè)消息鏈表中存儲(chǔ)的消息以及確定的兩者距離,可以方便快捷地從目標(biāo)網(wǎng)頁(yè)返回源網(wǎng)頁(yè),提升了用戶(hù)體驗(yàn),同時(shí),通過(guò)預(yù)設(shè)消息列表傳遞消息也避免了在不同終端的平臺(tái)、瀏覽器間修改網(wǎng)頁(yè)視圖控件的問(wèn)題,提升了網(wǎng)頁(yè)消息返回功能的通用性,節(jié)約了成本。
在上述技術(shù)方案中,優(yōu)選地,所述源頁(yè)面為所述目標(biāo)頁(yè)面的源頁(yè)面;以及所述網(wǎng)頁(yè)消息返回系統(tǒng)還包括:處理單元,在所述將所述業(yè)務(wù)修改內(nèi)容以消息的形式寫(xiě)入網(wǎng)頁(yè)應(yīng)用程序的預(yù)設(shè)消息鏈表中之后,通過(guò)所述目標(biāo)頁(yè)面從所述預(yù)設(shè)消息鏈表中讀取并處理所述消息。
在該技術(shù)方案中,源頁(yè)面可以直接將業(yè)務(wù)請(qǐng)求中改變的業(yè)務(wù)內(nèi)容以消息的形式寫(xiě)入預(yù)設(shè)消息鏈表,目標(biāo)頁(yè)面也可以直接從預(yù)設(shè)消息鏈表中讀取該消息,從而獲取到業(yè)務(wù)請(qǐng)求所請(qǐng)求變更的業(yè)務(wù)內(nèi)容,以便進(jìn)行相應(yīng)處理。通過(guò)本技術(shù)方案,可以避免網(wǎng)頁(yè)應(yīng)用程序中的頁(yè)面間的返回跳轉(zhuǎn)消息傳遞問(wèn)題,使用戶(hù)獲得類(lèi)原生應(yīng)用程序的導(dǎo)航體驗(yàn)效果,提升了用戶(hù)體驗(yàn),同時(shí),通過(guò)預(yù)設(shè)消息列表傳遞消息也避免了在不同終端的平臺(tái)、瀏覽器間修改網(wǎng)頁(yè)視圖控件的問(wèn)題,提升了網(wǎng)頁(yè)消息返回功能的通用性,節(jié)約了成本。其中,預(yù)設(shè)消息鏈表中的內(nèi)容包括但不限于消息源頁(yè)面名稱(chēng)、消息目標(biāo)頁(yè)面名稱(chēng)、消息類(lèi)型、消息的處理函數(shù)體。
在上述技術(shù)方案中,優(yōu)選地,還包括:記錄單元,根據(jù)接收到的記錄命令,為所述網(wǎng)頁(yè)應(yīng)用程序的每個(gè)頁(yè)面記錄歷史堆棧信息,并將所述每個(gè)頁(yè)面的所述歷史堆棧信息保存至所述網(wǎng)頁(yè)應(yīng)用程序的會(huì)話(huà)緩存中。
在該技術(shù)方案中,將網(wǎng)頁(yè)的歷史堆棧信息保存至網(wǎng)頁(yè)應(yīng)用程序的會(huì)話(huà)緩存中,從而可以方便地對(duì)網(wǎng)頁(yè)的歷史堆棧信息進(jìn)行讀取,解決了頁(yè)面返回過(guò)程中無(wú)法讀取或變動(dòng)網(wǎng)頁(yè)的歷史堆棧信息問(wèn)題,便于通過(guò)網(wǎng)頁(yè)的歷史堆棧信息與預(yù)設(shè)消息鏈表相結(jié)合完成消息返回傳遞。
在上述技術(shù)方案中,優(yōu)選地,所述讀取單元具體用于:檢測(cè)所述源頁(yè)面和所述目標(biāo)頁(yè)面是否都具有已記錄的所述歷史堆棧信息,其中,當(dāng)檢測(cè)結(jié)果為是時(shí),讀取所述源頁(yè)面和所述目標(biāo)頁(yè)面的已記錄的所述歷史堆棧信息,當(dāng)檢測(cè)結(jié)果為否時(shí),為所述源頁(yè)面和所述目標(biāo)頁(yè)面中不具有已記錄的所述歷史堆棧信息的頁(yè)面建立初始?xì)v史堆棧信息,并將所述初始?xì)v史堆棧信息保存至所述會(huì)話(huà)緩存中。
在該技術(shù)方案中,可以為不具有已記錄的歷史堆棧信息的頁(yè)面建立初始?xì)v史堆棧信息,以便通過(guò)頁(yè)面的歷史堆棧信息與預(yù)設(shè)消息鏈表相結(jié)合完成消息返回傳遞,從而提升網(wǎng)頁(yè)消息返回功能的通用性。
在上述技術(shù)方案中,優(yōu)選地,所述處理單元包括:判斷單元,判斷所述目標(biāo)頁(yè)面的所述歷史堆棧信息的長(zhǎng)度是否小于系統(tǒng)歷史長(zhǎng)度,以供根據(jù)判斷結(jié)果確定是否更新所述目標(biāo)頁(yè)面的所述歷史堆棧信息;鏈表歷遍單元,根據(jù)更新后的或無(wú)需更新的所述歷史堆棧信息,歷遍所述預(yù)設(shè)消息鏈表,以供讀取并處理存儲(chǔ)在所述預(yù)設(shè)消息鏈表的所述消息。
在該技術(shù)方案中,可以根據(jù)實(shí)際情況確定目標(biāo)頁(yè)面的歷史堆棧信息是否需要更新,以更好地適應(yīng)實(shí)際情況。另外,在獲得最新的歷史堆棧信息后,可以結(jié)合歷史堆棧信息與預(yù)設(shè)消息鏈表,將預(yù)設(shè)消息鏈表中的所有消息進(jìn)行歷遍以便返回源網(wǎng)頁(yè)。
在上述技術(shù)方案中,優(yōu)選地,所述判斷單元具體用于:當(dāng)所述判斷結(jié)果為是時(shí),將所述目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)合并至所述目標(biāo)頁(yè)面的所述歷史堆棧信息,以更新所述歷史堆棧信息,以及當(dāng)所述判斷結(jié)果為否時(shí),獲取當(dāng)前的所述系統(tǒng)歷史長(zhǎng)度,并在當(dāng)前的所述系統(tǒng)歷史長(zhǎng)度的棧頂為所述目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)時(shí),刪除所述目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)后面的所有項(xiàng),否則,將所述目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)合并至所述目標(biāo)頁(yè)面的所述歷史堆棧信息,以更新所述歷史堆棧信息。
在該技術(shù)方案中,提供了更新歷史堆棧信息的具體方式,其通過(guò)將目標(biāo)頁(yè)面置于棧頂,使得頁(yè)面返回操作變得更加快捷簡(jiǎn)便,如果歷史堆棧信息不需要更新,則可以直接將目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)合并至歷史堆棧信息中,從而完成歷史堆棧信息更新,使得頁(yè)面返回操作變得更加快捷簡(jiǎn)便,提升用戶(hù)體驗(yàn)。
在上述技術(shù)方案中,優(yōu)選地,所述消息的類(lèi)型包括提示類(lèi)型、確認(rèn)類(lèi)型、參數(shù)傳遞類(lèi)型或信號(hào)量類(lèi)型。
在該技術(shù)方案中,消息的類(lèi)型包括但不限于提示類(lèi)型、確認(rèn)類(lèi)型、參數(shù)傳遞類(lèi)型或信號(hào)量類(lèi)型,多種消息的類(lèi)型使得將業(yè)務(wù)修改內(nèi)容寫(xiě)入網(wǎng)頁(yè)應(yīng)用程序的預(yù)設(shè)消息鏈表的方式多種多樣,便于適應(yīng)用戶(hù)的實(shí)際需求。
通過(guò)以上技術(shù)方案,可以避免網(wǎng)頁(yè)應(yīng)用程序中的頁(yè)面間的跳轉(zhuǎn)消息傳遞問(wèn)題,使用戶(hù)獲得類(lèi)原生應(yīng)用程序的導(dǎo)航體驗(yàn)效果,提升了用戶(hù)體驗(yàn),并通過(guò)預(yù)設(shè)消息列表傳遞消息也避免了在不同終端的平臺(tái)、瀏覽器間修改網(wǎng)頁(yè)視圖控件的問(wèn)題,提升了網(wǎng)頁(yè)消息返回功能的通用性,節(jié)約了成本。
附圖說(shuō)明
圖1示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的網(wǎng)頁(yè)消息返回方法的流程圖;
圖2示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的網(wǎng)頁(yè)消息返回方法的流程圖;
圖3示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的源頁(yè)面發(fā)起消息返回的流程圖;
圖4示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的目標(biāo)頁(yè)面處理消息返回的流程圖;
圖5示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的網(wǎng)頁(yè)消息返回系統(tǒng)的框圖。
具體實(shí)施方式
為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)的實(shí)施例及實(shí)施例中的特征可以相互組合。
在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來(lái)實(shí)施,因此,本發(fā)明的保護(hù)范圍并不受下面公開(kāi)的具體實(shí)施例的限制。
圖1示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的網(wǎng)頁(yè)消息返回方法的流程圖。
如圖1所示,根據(jù)本發(fā)明的一個(gè)實(shí)施例的網(wǎng)頁(yè)消息返回方法,包括:
步驟102,根據(jù)接收到的業(yè)務(wù)請(qǐng)求,讀取源頁(yè)面和目標(biāo)頁(yè)面的歷史堆棧信息。
步驟104,根據(jù)讀取到的所述源頁(yè)面和所述目標(biāo)頁(yè)面的歷史堆棧信息,確定所述業(yè)務(wù)請(qǐng)求所請(qǐng)求的業(yè)務(wù)修改內(nèi)容。
步驟106,將所述業(yè)務(wù)修改內(nèi)容以消息的形式寫(xiě)入網(wǎng)頁(yè)應(yīng)用程序的預(yù)設(shè)消息鏈表中。
在該技術(shù)方案中,在接收到業(yè)務(wù)請(qǐng)求后,源頁(yè)面會(huì)確認(rèn)需要返回的目標(biāo)頁(yè)面,并通過(guò)源頁(yè)面和目標(biāo)頁(yè)面的歷史堆棧信息,確定返回目標(biāo)頁(yè)面的長(zhǎng)度,進(jìn)而將通過(guò)業(yè)務(wù)請(qǐng)求確認(rèn)的消息類(lèi)型和消息內(nèi)容等信息,插入到預(yù)設(shè)消息鏈表的消息隊(duì)列中,并根據(jù)返回目標(biāo)頁(yè)面的長(zhǎng)度,調(diào)用history.go(-n)語(yǔ)句執(zhí)行返回操作。通過(guò)本技術(shù)方案,可以通過(guò)源頁(yè)面和目標(biāo)頁(yè)面的歷史堆棧信息,確定兩者的距離,這個(gè)距離并不是物理意義上的距離,而是指源網(wǎng)頁(yè)經(jīng)多少層才生成目標(biāo)網(wǎng)頁(yè),通過(guò)預(yù)設(shè)消息鏈表中存儲(chǔ)的消息以及確定的兩者距離,可以方便快捷地從目標(biāo)網(wǎng)頁(yè)返回源網(wǎng)頁(yè),提升了用戶(hù)體驗(yàn),同時(shí),通過(guò)預(yù)設(shè)消息列表傳遞消息也避免了在不同終端的平臺(tái)、瀏覽器間修改網(wǎng)頁(yè)視圖控件的問(wèn)題,提升了網(wǎng)頁(yè)消息返回功能的通用性,節(jié)約了成本。
在上述技術(shù)方案中,優(yōu)選地,所述源頁(yè)面為所述目標(biāo)頁(yè)面的源頁(yè)面;以及在步驟106之后,還包括:通過(guò)所述目標(biāo)頁(yè)面從所述預(yù)設(shè)消息鏈表中讀取并處理所述消息。
在該技術(shù)方案中,源頁(yè)面可以直接將業(yè)務(wù)請(qǐng)求中改變的業(yè)務(wù)內(nèi)容以消息的形式寫(xiě)入預(yù)設(shè)消息鏈表,目標(biāo)頁(yè)面也可以直接從預(yù)設(shè)消息鏈表中讀取該消息,從而獲取到業(yè)務(wù)請(qǐng)求所請(qǐng)求變更的業(yè)務(wù)內(nèi)容,以便進(jìn)行相應(yīng)處理。通過(guò)本技術(shù)方案,可以避免網(wǎng)頁(yè)應(yīng)用程序中的頁(yè)面間的返回跳轉(zhuǎn)消息傳遞問(wèn)題,使用戶(hù)獲得類(lèi)原生應(yīng)用程序的導(dǎo)航體驗(yàn)效果,提升了用戶(hù)體驗(yàn),同時(shí),通過(guò)預(yù)設(shè)消息列表傳遞消息也避免了在不同終端的平臺(tái)、瀏覽器間修改網(wǎng)頁(yè)視圖控件的問(wèn)題,提升了網(wǎng)頁(yè)消息返回功能的通用性,節(jié)約了成本。其中,預(yù)設(shè)消息鏈表中的內(nèi)容包括但不限于消息源頁(yè)面名稱(chēng)、消息目標(biāo)頁(yè)面名稱(chēng)、消息類(lèi)型、消息的處理函數(shù)體。
在上述技術(shù)方案中,優(yōu)選地,還包括:根據(jù)接收到的記錄命令,為網(wǎng)頁(yè)應(yīng)用程序的每個(gè)頁(yè)面記錄歷史堆棧信息,并將每個(gè)頁(yè)面的歷史堆棧信息保存至網(wǎng)頁(yè)應(yīng)用程序的會(huì)話(huà)緩存中。
在該技術(shù)方案中,將網(wǎng)頁(yè)的歷史堆棧信息保存至網(wǎng)頁(yè)應(yīng)用程序的會(huì)話(huà)緩存中,從而可以方便地對(duì)網(wǎng)頁(yè)的歷史堆棧信息進(jìn)行讀取,解決了頁(yè)面返回過(guò)程中無(wú)法讀取或變動(dòng)網(wǎng)頁(yè)的歷史堆棧信息問(wèn)題,便于通過(guò)網(wǎng)頁(yè)的歷史堆棧信息與預(yù)設(shè)消息鏈表相結(jié)合完成消息返回傳遞。
在上述技術(shù)方案中,優(yōu)選地,讀取源頁(yè)面和目標(biāo)頁(yè)面的歷史堆棧信息,具體包括:檢測(cè)源頁(yè)面和目標(biāo)頁(yè)面是否都具有已記錄的歷史堆棧信息,其中,當(dāng)檢測(cè)結(jié)果為是時(shí),讀取源頁(yè)面和目標(biāo)頁(yè)面的已記錄的歷史堆棧信息,當(dāng)檢測(cè)結(jié)果為否時(shí),為源頁(yè)面和目標(biāo)頁(yè)面中不具有已記錄的歷史堆棧信息的頁(yè)面建立初始?xì)v史堆棧信息,并將初始?xì)v史堆棧信息保存至?xí)?huà)緩存中。
在該技術(shù)方案中,可以為不具有已記錄的歷史堆棧信息的頁(yè)面建立初始?xì)v史堆棧信息,以便通過(guò)頁(yè)面的歷史堆棧信息與預(yù)設(shè)消息鏈表相結(jié)合完成消息返回傳遞,從而提升網(wǎng)頁(yè)消息返回功能的通用性。
在上述技術(shù)方案中,優(yōu)選地,所述通過(guò)所述目標(biāo)頁(yè)面從所述預(yù)設(shè)消息鏈表中讀取并處理所述消息,包括:判斷目標(biāo)頁(yè)面的歷史堆棧信息的長(zhǎng)度是否小于系統(tǒng)歷史長(zhǎng)度,以供根據(jù)判斷結(jié)果確定是否更新目標(biāo)頁(yè)面的歷史堆棧信息;根據(jù)更新后的或無(wú)需更新的歷史堆棧信息,歷遍預(yù)設(shè)消息鏈表,以供讀取并處理存儲(chǔ)在預(yù)設(shè)消息鏈表的消息。
在該技術(shù)方案中,可以根據(jù)實(shí)際情況確定目標(biāo)頁(yè)面的歷史堆棧信息是否需要更新,以更好地適應(yīng)實(shí)際情況。另外,在獲得最新的歷史堆棧信息后,可以結(jié)合歷史堆棧信息與預(yù)設(shè)消息鏈表,將預(yù)設(shè)消息鏈表中的所有消息進(jìn)行歷遍以便返回源網(wǎng)頁(yè)。
在上述技術(shù)方案中,優(yōu)選地,根據(jù)判斷結(jié)果確定是否更新目標(biāo)頁(yè)面的歷史堆棧信息,具體包括:當(dāng)判斷結(jié)果為是時(shí),將目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)合并至目標(biāo)頁(yè)面的歷史堆棧信息,以更新歷史堆棧信息;當(dāng)判斷結(jié)果為否時(shí),獲取當(dāng)前的系統(tǒng)歷史長(zhǎng)度,并在當(dāng)前的系統(tǒng)歷史長(zhǎng)度的棧頂為目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)時(shí),刪除目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)后面的所有項(xiàng),否則,將目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)合并至目標(biāo)頁(yè)面的歷史堆棧信息,以更新歷史堆棧信息。
在該技術(shù)方案中,提供了更新歷史堆棧信息的具體方式,其通過(guò)將目標(biāo)頁(yè)面置于棧頂,使得頁(yè)面返回操作變得更加快捷簡(jiǎn)便,如果歷史堆棧信息不需要更新,則可以直接將目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)合并至歷史堆棧信息中,從而完成歷史堆棧信息更新,使得頁(yè)面返回操作變得更加快捷簡(jiǎn)便,提升用戶(hù)體驗(yàn)。
在上述技術(shù)方案中,優(yōu)選地,所述消息的類(lèi)型包括提示類(lèi)型、確認(rèn)類(lèi)型、參數(shù)傳遞類(lèi)型或信號(hào)量類(lèi)型。
在該技術(shù)方案中,消息的類(lèi)型包括但不限于提示類(lèi)型、確認(rèn)類(lèi)型、參數(shù)傳遞類(lèi)型或信號(hào)量類(lèi)型,多種消息的類(lèi)型使得將業(yè)務(wù)修改內(nèi)容寫(xiě)入網(wǎng)頁(yè)應(yīng)用程序的預(yù)設(shè)消息鏈表的方式多種多樣,便于適應(yīng)用戶(hù)的實(shí)際需求。
圖2示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的網(wǎng)頁(yè)消息返回方法的流程圖。
如圖2所示,根據(jù)本發(fā)明的另一個(gè)實(shí)施例的網(wǎng)頁(yè)消息返回方法,包括:
步驟202,建立頁(yè)面歷史堆棧,每次進(jìn)入頁(yè)面,頁(yè)面都需要對(duì)該堆棧進(jìn)行維護(hù)。其中,可通過(guò)mHistoryStack=sessionStorage.getItem(“HISTORY_STACK”)獲取該堆棧內(nèi)容。
步驟204,建立頁(yè)面間消息傳遞鏈表,發(fā)送消息的頁(yè)面(源頁(yè)面)需要添加消息到該消息傳遞鏈表中,以便接收消息的頁(yè)面(目標(biāo)頁(yè)面)接收。
步驟206,目標(biāo)頁(yè)面初始化時(shí),根據(jù)需要監(jiān)聽(tīng)的消息、頁(yè)面間消息傳遞鏈表、頁(yè)面歷史堆棧等信息,統(tǒng)一處理后,響應(yīng)源頁(yè)面發(fā)送的消息。
步驟208,目標(biāo)頁(yè)面重新刷新歷史堆棧和頁(yè)面間消息傳遞鏈表數(shù)據(jù)。
具體地,如果mHistoryStack不存在,則新建mHistoryStack,并把當(dāng)前頁(yè)面做為子項(xiàng)添加到mHistoryStack中,并使用sessionStorage.setItem(“HISTORY_STACK”,mHistoryStack),寫(xiě)入會(huì)話(huà)中。
如果已存在mHistoryStack,則需要通過(guò)window、history、length等webview系統(tǒng)接口獲取當(dāng)前系統(tǒng)歷史記錄的長(zhǎng)度n,同時(shí)獲取mHistoryStack的長(zhǎng)度m,比較m、n大小,若m大于n,則證明頁(yè)面為返回頁(yè)面而不是新進(jìn)入頁(yè)面,設(shè)置mHistoryStack.length等于n,否則把當(dāng)前頁(yè)面入棧mHistoryStack.push()。
在讀取消息隊(duì)列鏈表時(shí),如果鏈表mMsgLink為null,則不進(jìn)行處理,如果不為null,則遍歷該鏈表,并比較每項(xiàng)msgItem.dstPageName是否與當(dāng)前window.location相等。其中,如果相等,表示該消息為接受者為當(dāng)前頁(yè)面,當(dāng)前頁(yè)面處理該消息,根據(jù)msgItem.type類(lèi)型,提示用戶(hù)信息,這種方式的目的使開(kāi)發(fā)者在開(kāi)發(fā)webapp時(shí),可以向歷史記錄的頁(yè)面發(fā)送消息。
當(dāng)頁(yè)面在發(fā)送消息給返回給頁(yè)面時(shí),需要根據(jù)業(yè)務(wù),確認(rèn)返回頁(yè)面的名稱(chēng),讀取mHistroayStack,根據(jù)mHistoryStack每項(xiàng)的頁(yè)面名稱(chēng),和業(yè)務(wù)需要返回的頁(yè)面,確定需要返回的長(zhǎng)度n。
另外,還需要新建消息項(xiàng)msgItem,設(shè)置msgItem項(xiàng)的類(lèi)型和內(nèi)容,msgItem.type和msgItem.data以及消息處理句柄msgItem.handle內(nèi)容,插入mMessageLink中。并將mMessageLink寫(xiě)入到會(huì)話(huà)緩存中,最后,使用history.go(-n)語(yǔ)句,返回歷史頁(yè)面。
通過(guò)以上技術(shù)方案,可以避免網(wǎng)頁(yè)應(yīng)用程序中的頁(yè)面間的跳轉(zhuǎn)消息傳遞問(wèn)題,使用戶(hù)獲得類(lèi)原生應(yīng)用程序的導(dǎo)航體驗(yàn)效果,提升了用戶(hù)體驗(yàn),同時(shí),通過(guò)預(yù)設(shè)消息列表傳遞消息也避免了在不同終端的平臺(tái)、瀏覽器間修改網(wǎng)頁(yè)視圖控件的問(wèn)題,提升了網(wǎng)頁(yè)消息返回功能的通用性,節(jié)約了成本。
圖3示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的源頁(yè)面發(fā)起消息返回的流程圖。
如圖3所示,根據(jù)本發(fā)明的一個(gè)實(shí)施例的源頁(yè)面發(fā)起消息返回的流程包括:
步驟302,根據(jù)業(yè)務(wù)需求,確認(rèn)返回頁(yè)面(目標(biāo)頁(yè)面)。
步驟304,讀取歷史記錄堆棧,確認(rèn)返回頁(yè)面的長(zhǎng)度。
步驟306,根據(jù)業(yè)務(wù)需求中請(qǐng)求的業(yè)務(wù)修改,確認(rèn)需要給目標(biāo)文件發(fā)送的消息類(lèi)型和消息內(nèi)容。
步驟308,將確定了消息類(lèi)型和消息內(nèi)容的消息插入到消息通知隊(duì)列中,并根據(jù)需要返回的長(zhǎng)度,調(diào)用history.go(-n)語(yǔ)句執(zhí)行返回。
圖4示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的目標(biāo)頁(yè)面處理消息返回的流程圖。
如圖4所示,根據(jù)本發(fā)明的一個(gè)實(shí)施例的目標(biāo)頁(yè)面處理消息返回的流程包括:
步驟402,讀取historyTask(歷史記錄堆棧)。
步驟404,historyTask是否小于系統(tǒng)歷史長(zhǎng)度,當(dāng)判斷結(jié)果為是時(shí),進(jìn)入步驟406,當(dāng)判斷結(jié)果為否時(shí),進(jìn)入步驟408。
步驟406,把當(dāng)前頁(yè)面名稱(chēng)項(xiàng)加入到historyTask中。
步驟408,獲取當(dāng)前系統(tǒng)歷史長(zhǎng)度n。
步驟410,歷史堆棧第n項(xiàng)的值與當(dāng)前頁(yè)面名稱(chēng)是否相等,當(dāng)判斷結(jié)果為是時(shí),進(jìn)入步驟412,當(dāng)判斷結(jié)果為否時(shí),進(jìn)入步驟406。
步驟412,刪除historyTask中n+1及后面所有項(xiàng)。
步驟414,遍歷頁(yè)面間消息鏈表。
步驟416,讀取并處理消息。
下面結(jié)合圖2至圖4具體描述本發(fā)明實(shí)施例的網(wǎng)頁(yè)消息返回方法,其主要包括:
記錄頁(yè)面的歷史堆棧信息,頁(yè)面堆棧信息保存在webview的sessionStorage(會(huì)話(huà)緩存)中;記錄頁(yè)面之間消息傳遞信息,并在處理完信息后,在消息列表上,刪除該消息記錄,將消息信息保存于webview的sessionStorage中;進(jìn)入新頁(yè)面或者頁(yè)面返回,頁(yè)面在加載完畢后,需要對(duì)歷史堆棧信息進(jìn)行維護(hù),如沒(méi)有歷史堆棧,則可以新建歷史堆棧,并將新建的歷史堆棧寫(xiě)入sessionStorage;進(jìn)入新頁(yè)面或者是頁(yè)面返回,頁(yè)面在加載完畢后,需要對(duì)消息列表進(jìn)行遍歷,并處理該頁(yè)面消息,如無(wú)消息則不處理,并更新頁(yè)面消息鏈表,其中所述的消息包括:提示用戶(hù)消息、執(zhí)行下步操作確認(rèn)信息、提示用戶(hù)確認(rèn)的信息等。另外,當(dāng)前頁(yè)面如有需要,在返回歷史堆棧的頁(yè)面前,需要向頁(yè)面間消息傳遞鏈表寫(xiě)入需要發(fā)送的消息。
其次,在整個(gè)業(yè)務(wù)的過(guò)程中,需要維護(hù)一個(gè)頁(yè)面名稱(chēng)的記錄堆棧,并將堆棧內(nèi)容信息保存在sessionStorage中,頁(yè)面在初始化時(shí)根據(jù)頁(yè)面的名稱(chēng)壓入堆棧;頁(yè)面歷史堆棧的維護(hù)需要區(qū)分新進(jìn)入頁(yè)面和從上一頁(yè)面返回到當(dāng)前頁(yè)面這兩種情況,并對(duì)這兩種情況做不同的處理,其中,頁(yè)面歷史堆棧存儲(chǔ)方法為先入后出,頁(yè)面歷史堆棧子項(xiàng)內(nèi)容包括但不僅限于頁(yè)面名稱(chēng)。
在整個(gè)業(yè)務(wù)的過(guò)程中,還需要維護(hù)一個(gè)頁(yè)面間的消息傳遞鏈表,鏈表內(nèi)容包括但不僅限于:消息源頁(yè)面名稱(chēng)、消息目標(biāo)頁(yè)面名稱(chēng)、消息類(lèi)型、消息的處理函數(shù)體。消息列表保存在sessionStorage中,比如,消息可以生產(chǎn)和消費(fèi),生產(chǎn)者需要確定該消息發(fā)送給目標(biāo)頁(yè)面的名稱(chēng)、類(lèi)型,如果需要目標(biāo)頁(yè)面執(zhí)行方法,那么消息體中,需要包含處理方法的實(shí)現(xiàn)。另外,消息類(lèi)型有提示類(lèi)型、確認(rèn)類(lèi)型、參數(shù)傳遞類(lèi)型、信號(hào)量類(lèi)型等。
目標(biāo)頁(yè)面在初始化時(shí),需要先初始化接收消息處理方法,再進(jìn)行消息列表的遍歷處理,如果、消息被處理(消費(fèi))后、目標(biāo)頁(yè)面需要更新sessionStorage的消息隊(duì)列、刪除該消息。
區(qū)分新進(jìn)入頁(yè)面和返回頁(yè)面,并對(duì)頁(yè)面歷史堆棧做不同處理;使用瀏覽器或者window、history、length等webview系統(tǒng)接口獲取當(dāng)前系統(tǒng)的頁(yè)面歷史記錄長(zhǎng)度。
根據(jù)該長(zhǎng)度、當(dāng)前頁(yè)面名稱(chēng)、sessionStorage中的歷史堆棧,可區(qū)分出當(dāng)前的頁(yè)面為首次進(jìn)入還是返回頁(yè)面,如果當(dāng)前頁(yè)面為新進(jìn)入頁(yè)面,需要把當(dāng)前頁(yè)面入棧到sessionStorage的歷史記錄堆棧中,如為返回頁(yè)面、那么需要把sessionStorage中的歷史記錄堆棧去掉系統(tǒng)長(zhǎng)度后的所有頁(yè)面,確保當(dāng)前頁(yè)面處于棧頂,保證系統(tǒng)的歷史記錄長(zhǎng)度與sessionStorage中的歷史記錄堆棧的長(zhǎng)度相等。
網(wǎng)頁(yè)間消息傳遞鏈表的消息類(lèi)型可擴(kuò)展數(shù)據(jù)類(lèi)型,添加源頁(yè)面名稱(chēng),并重載消息處理方法,使其判斷源頁(yè)面和目標(biāo)頁(yè)面與當(dāng)前頁(yè)面需要處理的消息的源頁(yè)面和目標(biāo)頁(yè)面參數(shù)一致后,再進(jìn)行消息處理,使消息處理更為嚴(yán)格。
源頁(yè)面可獲得歷史記錄堆棧內(nèi)容,從而可明確需要返回哪一目標(biāo)頁(yè)面、并且可使用消息鏈表為返回頁(yè)面?zhèn)鬟f消息;目標(biāo)頁(yè)面可根據(jù)該消息類(lèi)型、提示用戶(hù)、警告用戶(hù)、或者處理之前頁(yè)面的處理結(jié)果。從而避免了傳統(tǒng)瀏覽器的操作方式、只能往前提示消息,不斷的頁(yè)面加載,系統(tǒng)歷史記錄不斷增加,造成需要退出應(yīng)用時(shí),用戶(hù)需要不斷的按下返回按鍵,造成不良好的用戶(hù)體驗(yàn)。
源頁(yè)面返回堆棧中的任意一個(gè)目標(biāo)頁(yè)面時(shí),可從sessionStorage中讀取歷史堆棧信息,并根據(jù)當(dāng)前堆棧的長(zhǎng)度,返回目標(biāo)頁(yè)面在堆棧的位置,計(jì)算出需要返回的長(zhǎng)度,并使用history.go的webview系統(tǒng)接口方式進(jìn)行回滾。
目標(biāo)頁(yè)面啟動(dòng)時(shí),可獲取自身屬性,并確定自身是新啟動(dòng)頁(yè)面還是返回頁(yè)面,如果為返回界面,并且有處理消息。目標(biāo)頁(yè)面先獲歷史記錄堆棧,獲取源頁(yè)面信息、當(dāng)前頁(yè)面信息,刷新歷史記錄堆棧,使當(dāng)前頁(yè)面處于棧頂;再遍歷消息鏈表,讀取消息體,并刪除鏈表中的對(duì)應(yīng)項(xiàng),以及根據(jù)消息體的類(lèi)型,執(zhí)行動(dòng)作。
圖5示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的網(wǎng)頁(yè)消息返回系統(tǒng)的框圖。
如圖5所示,根據(jù)本發(fā)明的一個(gè)實(shí)施例的網(wǎng)頁(yè)消息返回系統(tǒng)500,包括:讀取單元502,根據(jù)接收到的業(yè)務(wù)請(qǐng)求,讀取源頁(yè)面和目標(biāo)頁(yè)面的歷史堆棧信息;消息確定單元504,根據(jù)讀取到的所述源頁(yè)面和所述目標(biāo)頁(yè)面的歷史堆棧信息,確定所述業(yè)務(wù)請(qǐng)求所請(qǐng)求的業(yè)務(wù)修改內(nèi)容;鏈表更新單元506,將所述業(yè)務(wù)修改內(nèi)容以消息的形式寫(xiě)入網(wǎng)頁(yè)應(yīng)用程序的預(yù)設(shè)消息鏈表中。
在該技術(shù)方案中,在接收到業(yè)務(wù)請(qǐng)求后,源頁(yè)面會(huì)確認(rèn)需要返回的目標(biāo)頁(yè)面,并通過(guò)源頁(yè)面和目標(biāo)頁(yè)面的歷史堆棧信息,確定返回目標(biāo)頁(yè)面的長(zhǎng)度,進(jìn)而將通過(guò)業(yè)務(wù)請(qǐng)求確認(rèn)的消息類(lèi)型和消息內(nèi)容等信息,插入到預(yù)設(shè)消息鏈表的消息隊(duì)列中,并根據(jù)返回目標(biāo)頁(yè)面的長(zhǎng)度,調(diào)用history.go(-n)語(yǔ)句執(zhí)行返回操作。通過(guò)本技術(shù)方案,可以通過(guò)源頁(yè)面和目標(biāo)頁(yè)面的歷史堆棧信息,確定兩者的距離,這個(gè)距離并不是物理意義上的距離,而是指源網(wǎng)頁(yè)經(jīng)多少層才生成目標(biāo)網(wǎng)頁(yè),通過(guò)預(yù)設(shè)消息鏈表中存儲(chǔ)的消息以及確定的兩者距離,可以方便快捷地從目標(biāo)網(wǎng)頁(yè)返回源網(wǎng)頁(yè),提升了用戶(hù)體驗(yàn),同時(shí),通過(guò)預(yù)設(shè)消息列表傳遞消息也避免了在不同終端的平臺(tái)、瀏覽器間修改網(wǎng)頁(yè)視圖控件的問(wèn)題,提升了網(wǎng)頁(yè)消息返回功能的通用性,節(jié)約了成本。
在上述技術(shù)方案中,優(yōu)選地,所述源頁(yè)面為所述目標(biāo)頁(yè)面的源頁(yè)面;以及網(wǎng)頁(yè)消息返回系統(tǒng)500還包括:處理單元508,在所述將所述業(yè)務(wù)修改內(nèi)容以消息的形式寫(xiě)入網(wǎng)頁(yè)應(yīng)用程序的預(yù)設(shè)消息鏈表中之后,通過(guò)所述目標(biāo)頁(yè)面從所述預(yù)設(shè)消息鏈表中讀取并處理所述消息。
在該技術(shù)方案中,源頁(yè)面可以直接將業(yè)務(wù)請(qǐng)求中改變的業(yè)務(wù)內(nèi)容以消息的形式寫(xiě)入預(yù)設(shè)消息鏈表,目標(biāo)頁(yè)面也可以直接從預(yù)設(shè)消息鏈表中讀取該消息,從而獲取到業(yè)務(wù)請(qǐng)求所請(qǐng)求變更的業(yè)務(wù)內(nèi)容,以便進(jìn)行相應(yīng)處理。通過(guò)本技術(shù)方案,可以避免網(wǎng)頁(yè)應(yīng)用程序中的頁(yè)面間的返回跳轉(zhuǎn)消息傳遞問(wèn)題,使用戶(hù)獲得類(lèi)原生應(yīng)用程序的導(dǎo)航體驗(yàn)效果,提升了用戶(hù)體驗(yàn),同時(shí),通過(guò)預(yù)設(shè)消息列表傳遞消息也避免了在不同終端的平臺(tái)、瀏覽器間修改網(wǎng)頁(yè)視圖控件的問(wèn)題,提升了網(wǎng)頁(yè)消息返回功能的通用性,節(jié)約了成本。其中,預(yù)設(shè)消息鏈表中的內(nèi)容包括但不限于消息源頁(yè)面名稱(chēng)、消息目標(biāo)頁(yè)面名稱(chēng)、消息類(lèi)型、消息的處理函數(shù)體。
在上述技術(shù)方案中,優(yōu)選地,還包括:記錄單元510,根據(jù)接收到的記錄命令,為網(wǎng)頁(yè)應(yīng)用程序的每個(gè)頁(yè)面記錄歷史堆棧信息,并將每個(gè)頁(yè)面的歷史堆棧信息保存至網(wǎng)頁(yè)應(yīng)用程序的會(huì)話(huà)緩存中。
在該技術(shù)方案中,將網(wǎng)頁(yè)的歷史堆棧信息保存至網(wǎng)頁(yè)應(yīng)用程序的會(huì)話(huà)緩存中,從而可以方便地對(duì)網(wǎng)頁(yè)的歷史堆棧信息進(jìn)行讀取,解決了頁(yè)面返回過(guò)程中無(wú)法讀取或變動(dòng)網(wǎng)頁(yè)的歷史堆棧信息問(wèn)題,便于通過(guò)網(wǎng)頁(yè)的歷史堆棧信息與預(yù)設(shè)消息鏈表相結(jié)合完成消息返回傳遞。
在上述技術(shù)方案中,優(yōu)選地,讀取單元502具體用于:檢測(cè)源頁(yè)面和目標(biāo)頁(yè)面是否都具有已記錄的歷史堆棧信息,其中,當(dāng)檢測(cè)結(jié)果為是時(shí),讀取源頁(yè)面和目標(biāo)頁(yè)面的已記錄的歷史堆棧信息,當(dāng)檢測(cè)結(jié)果為否時(shí),為源頁(yè)面和目標(biāo)頁(yè)面中不具有已記錄的歷史堆棧信息的頁(yè)面建立初始?xì)v史堆棧信息,并將初始?xì)v史堆棧信息保存至?xí)?huà)緩存中。
在該技術(shù)方案中,可以為不具有已記錄的歷史堆棧信息的頁(yè)面建立初始?xì)v史堆棧信息,以便通過(guò)頁(yè)面的歷史堆棧信息與預(yù)設(shè)消息鏈表相結(jié)合完成消息返回傳遞,從而提升網(wǎng)頁(yè)消息返回功能的通用性。
在上述技術(shù)方案中,優(yōu)選地,處理單元508包括:判斷單元5082,判斷目標(biāo)頁(yè)面的歷史堆棧信息的長(zhǎng)度是否小于系統(tǒng)歷史長(zhǎng)度,以供根據(jù)判斷結(jié)果確定是否更新目標(biāo)頁(yè)面的歷史堆棧信息;鏈表歷遍單元5084,根據(jù)更新后的或無(wú)需更新的歷史堆棧信息,歷遍預(yù)設(shè)消息鏈表,以供讀取并處理存儲(chǔ)在預(yù)設(shè)消息鏈表的消息。
在該技術(shù)方案中,可以根據(jù)實(shí)際情況確定目標(biāo)頁(yè)面的歷史堆棧信息是否需要更新,以更好地適應(yīng)實(shí)際情況。另外,在獲得最新的歷史堆棧信息后,可以結(jié)合歷史堆棧信息與預(yù)設(shè)消息鏈表,將預(yù)設(shè)消息鏈表中的所有消息進(jìn)行歷遍以便返回源網(wǎng)頁(yè)。
在上述技術(shù)方案中,優(yōu)選地,判斷單元5082具體用于:當(dāng)判斷結(jié)果為是時(shí),將目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)合并至目標(biāo)頁(yè)面的歷史堆棧信息,以更新歷史堆棧信息,以及當(dāng)判斷結(jié)果為否時(shí),獲取當(dāng)前的系統(tǒng)歷史長(zhǎng)度,并在當(dāng)前的系統(tǒng)歷史長(zhǎng)度的棧頂為目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)時(shí),刪除目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)后面的所有項(xiàng),否則,將目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)合并至目標(biāo)頁(yè)面的歷史堆棧信息,以更新歷史堆棧信息。
在該技術(shù)方案中,提供了更新歷史堆棧信息的具體方式,其通過(guò)將目標(biāo)頁(yè)面置于棧頂,使得頁(yè)面返回操作變得更加快捷簡(jiǎn)便,如果歷史堆棧信息不需要更新,則可以直接將目標(biāo)頁(yè)面的名稱(chēng)項(xiàng)合并至歷史堆棧信息中,從而完成歷史堆棧信息更新,使得頁(yè)面返回操作變得更加快捷簡(jiǎn)便,提升用戶(hù)體驗(yàn)。
在上述技術(shù)方案中,優(yōu)選地,所述消息的類(lèi)型包括提示類(lèi)型、確認(rèn)類(lèi)型、參數(shù)傳遞類(lèi)型或信號(hào)量類(lèi)型。
在該技術(shù)方案中,消息的類(lèi)型包括但不限于提示類(lèi)型、確認(rèn)類(lèi)型、參數(shù)傳遞類(lèi)型或信號(hào)量類(lèi)型,多種消息的類(lèi)型使得將業(yè)務(wù)修改內(nèi)容寫(xiě)入網(wǎng)頁(yè)應(yīng)用程序的預(yù)設(shè)消息鏈表的方式多種多樣,便于適應(yīng)用戶(hù)的實(shí)際需求。
以上結(jié)合附圖詳細(xì)說(shuō)明了本發(fā)明的技術(shù)方案,通過(guò)以上技術(shù)方案,可以避免網(wǎng)頁(yè)應(yīng)用程序中的頁(yè)面間的跳轉(zhuǎn)消息傳遞問(wèn)題,使用戶(hù)獲得類(lèi)原生應(yīng)用程序的導(dǎo)航體驗(yàn)效果,提升了用戶(hù)體驗(yàn),同時(shí),通過(guò)預(yù)設(shè)消息列表傳遞消息也避免了在不同終端的平臺(tái)、瀏覽器間修改網(wǎng)頁(yè)視圖控件的問(wèn)題,提升了網(wǎng)頁(yè)消息返回功能的通用性,節(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)。