国产精品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>

      一種基于網(wǎng)頁彈出窗口的客戶端內(nèi)嵌頁交互方法及系統(tǒng)與流程

      文檔序號:12905944閱讀:781來源:國知局
      一種基于網(wǎng)頁彈出窗口的客戶端內(nèi)嵌頁交互方法及系統(tǒng)與流程

      本發(fā)明涉計算機軟件領(lǐng)域,特別涉及一種基于網(wǎng)頁彈出窗口的客戶端內(nèi)嵌頁交互方法及系統(tǒng)。



      背景技術(shù):

      內(nèi)嵌頁面又稱內(nèi)嵌網(wǎng)頁,是一種在客戶端軟件里面嵌入html(hypertextmarkuplanguage,超級文本標記語言)網(wǎng)頁的技術(shù),客戶端可以通過加載網(wǎng)站的頁面,并將其嵌入到客戶端界面當(dāng)中,由于網(wǎng)頁實際保存在后臺服務(wù)器,因此可以適應(yīng)快速迭代的需求,一些敏感的業(yè)務(wù)也可以直接在網(wǎng)頁上做,從而避免將接口暴露給客戶端。

      在當(dāng)今互聯(lián)網(wǎng)時代,任何客戶端軟件或多或少的都會涉及到需要在軟件里內(nèi)嵌網(wǎng)頁的問題??梢岳斫?,網(wǎng)頁作為展示信息的有效手段,最大的好處在于可以動態(tài)更換內(nèi)容、修復(fù)bug而且不需要客戶端軟件重新發(fā)版,所以也是越來越受到大家的青睞,以至于有些客戶端軟件整個就是由內(nèi)嵌網(wǎng)頁構(gòu)成,客戶端只是提供了一個窗口展示而已,比如,早期的豌豆莢軟件客戶端。

      然而,客戶端內(nèi)嵌網(wǎng)頁和傳統(tǒng)的瀏覽器中的網(wǎng)頁最大的不同之處在于:內(nèi)嵌網(wǎng)頁需要隨時隨地地和客戶端進行通信、交互用戶的操作和響應(yīng)。例如,一個在內(nèi)嵌網(wǎng)頁中下載資料的場景,通常來講提供下載的網(wǎng)頁從考慮盜鏈盜、保護流量亦或是推廣客戶端的角度出發(fā),往往不會直接提供下載地址,這樣在瀏覽器中打開這個網(wǎng)頁點擊下載將不會有任何反應(yīng)。但是,如果是在客戶端中打開這個網(wǎng)頁,當(dāng)用戶點擊網(wǎng)頁里的下載按鈕時,網(wǎng)頁此時將相關(guān)信息發(fā)送給客戶端,包括資料的名稱、所屬、id以及用戶的一些當(dāng)前狀態(tài),客戶端拿到這些信息后,使用一些安全的通信方式例如https協(xié)議,去指定服務(wù)器上查詢該資料的下載地址,然后進行下載,并且在下載的過程中定時向網(wǎng)頁匯報當(dāng)前的下載進度,以便網(wǎng)頁在相關(guān)的地方不停的更新下載進度信息,使得這個交互過程看起來就像是在網(wǎng)頁中一鍵下載了一樣。上述過程只是內(nèi)嵌網(wǎng)頁與客戶端交互的萬千場景中的簡單一例,足以說明內(nèi)嵌頁與客戶端交互的必要性和頻繁性,所以,兩者之間通信的方式和性能就成了制約響應(yīng)的的關(guān)鍵。



      技術(shù)實現(xiàn)要素:

      本發(fā)明要解決的技術(shù)問題是,提供一種用以內(nèi)嵌頁與客戶交互的基于網(wǎng)頁彈出窗口的客戶端內(nèi)嵌頁交互方法,提高通信的方式和性能,以及提高響應(yīng)交互性。

      解決上述技術(shù)問題,本發(fā)明提供了一種基于網(wǎng)頁彈出窗口的客戶端內(nèi)嵌頁交互方法,包括如下步驟:

      建立一解釋器,用以重載before和after接口,并響應(yīng)和控制解析過程,

      通過webkit組件中一個網(wǎng)頁即將彈出窗口時的回調(diào),傳入標題和/或窗口文本信息;

      當(dāng)與所述客戶端通信時,通過主動彈出一個窗口,并把該窗口的信息配置為按照設(shè)定規(guī)則編寫的文本信息;

      在所述客戶端檢查所述文本信息中的特殊字符串,完成解析后實現(xiàn)交互。

      更進一步,所述before接口具體為:

      onbeforeanalysishtml();//

      用以支持重載的在解析之前調(diào)用的接口。

      更進一步,所述after接口具體為:

      onafteranalysishtml();//

      用以支持重載的在解析之后調(diào)用的接口。

      更進一步,所述按照設(shè)定規(guī)則編寫的文本信息具體包括:

      {特定開頭+json字符串}。

      更進一步,所述網(wǎng)頁即將彈出窗口時的回調(diào)具體包括:

      boolonjsdialog(cefrefptr<cefbrowser>browser,

      當(dāng)onjsdialog的回調(diào)被觸發(fā)時,則所述客戶端去檢查傳入的文本信息。

      更進一步,方法還包括:

      根據(jù)回調(diào)的返回值決定是否彈出所述窗口,

      并將該回調(diào)的返回值置為false,用以取消這個彈出窗口。

      更進一步,所述客戶端內(nèi)嵌頁為:嵌入html格式的代碼。

      更進一步,網(wǎng)頁開發(fā)者通過主動彈出一個窗口向所述客戶端傳遞消息。

      更進一步,所述解釋器用以解析,從設(shè)定url獲取的html、javascript或者css的內(nèi)容。

      基于上述,本發(fā)明還提供了一種基于網(wǎng)頁彈出窗口的客戶端內(nèi)嵌頁交互系統(tǒng),包括:

      解釋單元,用以建立一解釋器,用以重載before和after接口,并響應(yīng)和控制解析過程,

      回調(diào)單元,用以通過webkit組件中一個網(wǎng)頁即將彈出窗口時的回調(diào),傳入標題和/或窗口文本信息;

      以及,在當(dāng)與所述客戶端通信時,通過主動彈出一個窗口,并把該窗口的信息配置為按照設(shè)定規(guī)則編寫的文本信息;

      在所述客戶端檢查所述文本信息中的特殊字符串,完成解析

      本發(fā)明的有益效果:

      在本發(fā)明中的方法,由于包括步驟:建立一解釋器,用以重載before和after接口,并響應(yīng)和控制解析過程,二次開發(fā)的人員,不需要改變整個解釋過程,只需要重載before和after接口就足以響應(yīng)和控制上述的解析過程。

      由于還包括步驟:通過webkit組件中一個網(wǎng)頁即將彈出窗口時的回調(diào),傳入標題和/或窗口文本信息;當(dāng)與所述客戶端通信時,通過主動彈出一個窗口,并把該窗口的信息配置為按照設(shè)定規(guī)則編寫的文本信息;在所述客戶端檢查所述文本信息中的特殊字符串,完成解析。在webkit組件的回調(diào)函數(shù)中,想要被彈出的窗口會傳入標題、窗口文本信息,并根據(jù)回調(diào)返回值決定是否真正的彈出這個窗口。而當(dāng)onjsdialog的回調(diào)被觸發(fā)時,客戶端會去檢查傳入的文本信息,若發(fā)現(xiàn)文本是由特定字符串開頭的話,就把后面的字符串按json解析,從而知道網(wǎng)頁想要傳達的是什么信息。

      附圖說明

      圖1是本發(fā)明一實施例中的方法流程示意圖;

      圖2是本發(fā)明一實施例中的系統(tǒng)結(jié)構(gòu)示意圖;

      圖3是圖2中的交互過程時序示意圖。

      具體實施方式

      現(xiàn)在將參考一些示例實施例描述本公開的原理??梢岳斫?,這些實施例僅出于說明并且?guī)椭绢I(lǐng)域的技術(shù)人員理解和實施例本公開的目的而描述,而非建議對本公開的范圍的任何限制。在此描述的本公開的內(nèi)容可以以下文描述的方式之外的各種方式實施。

      如本文中所述,術(shù)語“包括”及其各種變體可以被理解為開放式術(shù)語,其意味著“包括但不限于”。術(shù)語“基于”可以被理解為“至少部分地基于”。術(shù)語“一個實施例”可以被理解為“至少一個實施例”。術(shù)語“另一實施例”可以被理解為“至少一個其它實施例”。

      在本申請中的瀏覽器作為網(wǎng)頁的展示工具早已深入人心,實際上瀏覽器的對網(wǎng)頁的渲染就是一個解析過程,瀏覽器從指定的url獲取到全部的內(nèi)容,包括html、javascript、css等等,根據(jù)這些內(nèi)容按照相應(yīng)的解釋方式,在窗口上繪制出相應(yīng)的內(nèi)容。瀏覽器作為一個解析者和渲染者,對于html代碼想要進行的操作能夠全權(quán)控制。

      在本申請中的瀏覽器實現(xiàn)是個龐大的工程,需要支持全部的網(wǎng)頁技術(shù)特性并且進行正確的、高效的渲染和交互,從互聯(lián)網(wǎng)誕生至今,幾大廠商之間的長久競爭之下,現(xiàn)在主流的就是兩套技術(shù)方案,一套是ie內(nèi)核的,一套就是webkit。而ie內(nèi)核有版本眾多,而且特性不一的缺點,正在被逐漸淘汰,所以一旦考慮到內(nèi)嵌網(wǎng)頁技術(shù),一般都是使用webkit組件。

      圖1是本發(fā)明一實施例中的方法流程示意圖,在本實施例中的一種基于網(wǎng)頁彈出窗口的客戶端內(nèi)嵌頁交互方法,包括如下步驟:

      s1建立一解釋器,用以重載before和after接口,并響應(yīng)和控制解析過程,

      s2通過webkit組件中一個網(wǎng)頁即將彈出窗口時的回調(diào),傳入標題和/或窗口文本信息;

      s3當(dāng)與所述客戶端通信時,通過主動彈出一個窗口,并把該窗口的信息配置為按照設(shè)定規(guī)則編寫的文本信息;

      s4在所述客戶端檢查所述文本信息中的特殊字符串,完成解析。

      上述特定開頭包括但不限于,up://。

      特定字符串包括但不限于,up://+json業(yè)務(wù)字符串。

      在上述步驟s1中,解析器的偽代碼形式如下:

      onbeforeanalysishtml();//一個支持重載的在解析之前調(diào)用的接口

      ret=analysishtml();//解析html代碼

      if(ret==type_text)//如果解析結(jié)果是文本

      drawtext(ret);//則繪制文本

      onafteranalysishtml();//一個支持重載的在解析之后調(diào)用的接口

      通過上述解析器,二次開發(fā)的人員,不需要改變整個解釋過程,只需要重載before和after接口就足以響應(yīng)和控制這個過程了,如果想要控制的更為精準。

      在上述步驟s2中,以webkit組件為列,在webkit組件中,任何一個在javascript代碼里想要彈出的窗口,都會觸發(fā)如下回調(diào):

      boolonjsdialog(cefrefptr<cefbrowser>browser,

      constcefstring&origin_url,

      cosntcefstring&accept_lang,

      jsdialogtypedialog_type,

      constcefstring&message_text,

      constcefstring&default_prompt_text,

      cefrefptr<cefjsdialogcallback>callback,

      bool&suppress_message

      )

      在上述的回調(diào)中,想要被彈出的窗口會傳入標題、窗口文本信息,并根據(jù)回調(diào)返回值決定是否真正的彈出這個窗口。

      作為本實施例中的優(yōu)選,所述before接口具體為:

      onbeforeanalysishtml();//

      用以支持重載的在解析之前調(diào)用的接口。

      作為本實施例中的優(yōu)選,所述after接口具體為:

      onafteranalysishtml();//

      用以支持重載的在解析之后調(diào)用的接口。

      作為本實施例中的優(yōu)選,所述按照設(shè)定規(guī)則編寫的文本信息具體包括:

      {特定開頭+json字符串}。

      作為本實施例中的優(yōu)選,所述網(wǎng)頁即將彈出窗口時的回調(diào)具體包括:

      boolonjsdialog(cefrefptr<cefbrowser>browser,

      當(dāng)onjsdialog的回調(diào)被觸發(fā)時,則所述客戶端去檢查傳入的文本信息。

      作為本實施例中的優(yōu)選,方法還包括:

      根據(jù)回調(diào)的返回值決定是否彈出所述窗口,

      并將該回調(diào)的返回值置為false,用以取消這個彈出窗口。

      在一些實施例中,所述客戶端內(nèi)嵌頁為:嵌入html格式的代碼。

      在一些實施例中,網(wǎng)頁開發(fā)者通過主動彈出一個窗口向所述客戶端傳遞消息。

      在一些實施例中,所述解釋器用以解析,從設(shè)定url獲取的html、javascript或者css的內(nèi)容。

      通過上述上述步驟s1,二次開發(fā)的人員,不需要改變整個解釋過程,只需要重載before和after接口就足以響應(yīng)和控制上述的解析過程。

      通過上述上述步驟s2,在webkit組件的回調(diào)函數(shù)中,想要被彈出的窗口會傳入標題、窗口文本信息,并根據(jù)回調(diào)返回值決定是否真正的彈出這個窗口。而當(dāng)onjsdialog的回調(diào)被觸發(fā)時,客戶端會去檢查傳入的文本信息,若發(fā)現(xiàn)文本是由特定字符串開頭的話,就把后面的字符串按json解析,從而知道網(wǎng)頁想要傳達的是什么信息。

      請參考圖2是本發(fā)明一實施例中的系統(tǒng)結(jié)構(gòu)示意圖,請參考圖3是圖2中的交互過程時序示意圖,本實施例中的一種基于網(wǎng)頁彈出窗口的客戶端內(nèi)嵌頁交互系統(tǒng),包括:

      解釋單元100,用以建立一解釋器,用以重載before和after接口,并響應(yīng)和控制解析過程,

      回調(diào)單元200,用以通過webkit組件中一個網(wǎng)頁即將彈出窗口時的回調(diào),傳入標題和/或窗口文本信息;

      以及,在當(dāng)與所述客戶端通信時,通過主動彈出一個窗口,并把該窗口的信息配置為按照設(shè)定規(guī)則編寫的文本信息;

      在所述客戶端檢查所述文本信息中的特殊字符串,完成解析。

      比如一個最簡單的場景,html代碼想在網(wǎng)頁正中顯示一串文本,假如我們自己來實現(xiàn)解釋器的話,整個過程可能如下:

      ret=analysishtml();//解析html代碼

      if(ret==type_text)//如果解析結(jié)果是文本

      drawtext(ret);//則繪制文本

      作為解釋器的開發(fā)者,希望二次利用開發(fā)者的代碼的后續(xù)開發(fā)者能夠充分控制這個過程但又不會破壞我們的代碼結(jié)構(gòu)的話(這實際上就是面向?qū)ο箝_發(fā)的本質(zhì)特性--封裝與繼承),則在本實施例中可能會將如上代碼改寫成:

      onbeforeanalysishtml();//一個支持重載的在解析之前調(diào)用的接口

      ret=analysishtml();//解析html代碼

      if(ret==type_text)//如果解析結(jié)果是文本

      drawtext(ret);//則繪制文本

      onafteranalysishtml();//一個支持重載的在解析之后調(diào)用的接口

      這樣一來,二次開發(fā)的人員不需要改變整個解釋過程,只需要重載before和after接口就足以響應(yīng)和控制這個過程了,如果想要控制的更為精準,甚至可以把analysishtml和drawtext兩個方法也聲明為接口并向外暴露,這樣后繼者甚至可以更改解釋和繪制的過程了。但實際上作為解釋器的開發(fā)者而言,不會把這些接口提供的這么多這么全,如果想要達到這么入微級的控制,接口可能需要暴露成千上萬個,這對于開發(fā)者和二次開發(fā)者而言都是極大的負擔(dān),更重要的是沒有必要,絕大多數(shù)場景采用默認實現(xiàn)就夠了。

      本實施例中采用webkit組件進行內(nèi)嵌網(wǎng)頁實現(xiàn),webkit組件提供了不少解釋和渲染過程中的回調(diào),我們這里采用的是一個網(wǎng)頁即將彈出窗口時的回調(diào),在webkit組件中,任何一個在javascript代碼里想要彈出的窗口,都會觸發(fā)如下回調(diào):

      boolonjsdialog(cefrefptr<cefbrowser>browser,

      constcefstring&origin_url,

      cosntcefstring&accept_lang,

      jsdialogtypedialog_type,

      constcefstring&message_text,

      constcefstring&default_prompt_text,

      cefrefptr<cefjsdialogcallback>callback,

      bool&suppress_message

      )

      在上述的回調(diào)中,想要被彈出的窗口會傳入標題、窗口文本信息,并根據(jù)回調(diào)返回值決定是否真正的彈出這個窗口。

      在本實施例中,如果網(wǎng)頁的開發(fā)者希望通知客戶端某些信息時,就主動彈出一個窗口,并把窗口的信息置為按照特定規(guī)則編寫的文本信息,在這里我們采用的是特定開頭加json字符串的方式,因為json字符串可以傳遞任意類型的參數(shù)。

      在本實施例中,當(dāng)onjsdialog的回調(diào)被觸發(fā)時,客戶端會去檢查傳入的文本信息,一旦發(fā)現(xiàn)文本是由特定字符串開頭的話,就把后面的字符串按json解析,從而知道網(wǎng)頁想要傳達的是什么信息,觸發(fā)接下來的處理,同時將該回調(diào)的返回值置為false,取消這個彈出窗口,因為這個彈出窗口只是用來傳遞信息,不是真正的想要彈出一個窗口。

      應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實現(xiàn)。例如,如果用硬件來實現(xiàn),和在另一實施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項或他們的組合來實現(xiàn):具有用于對數(shù)據(jù)信號實現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(pga),現(xiàn)場可編程門陣列(fpga)等。

      在本說明書的描述中,參考術(shù)語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結(jié)合。

      總體而言,本公開的各種實施例可以以硬件或?qū)S秒娐?、軟件、邏輯或其任意組合實施。一些方面可以以硬件實施,而其它一些方面可以以固件或軟件實施,該固件或軟件可以由控制器、微處理器或其它計算設(shè)備執(zhí)行。雖然本公開的各種方面被示出和描述為框圖、流程圖或使用其它一些繪圖表示,但是可以理解本文描述的框、設(shè)備、系統(tǒng)、技術(shù)或方法可以以非限制性的方式以硬件、軟件、固件、專用電路或邏輯、通用硬件或控制器或其它計算設(shè)備或其一些組合實施。

      此外,雖然操作以特定順序描述,但是這不應(yīng)被理解為要求這類操作以所示的順序執(zhí)行或是以順序序列執(zhí)行,或是要求所有所示的操作被執(zhí)行以實現(xiàn)期望結(jié)果。在一些情形下,多任務(wù)或并行處理可以是有利的。類似地,雖然若干具體實現(xiàn)方式的細節(jié)在上面的討論中被包含,但是這些不應(yīng)被解釋為對本公開的范圍的任何限制,而是特征的描述僅是針對具體實施例。在分離的一些實施例中描述的某些特征也可以在單個實施例中組合地執(zhí)行。相反對,在單個實施例中描述的各種特征也可以在多個實施例中分離地實施或是以任何合適的子組合的方式實施。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1