用方法獲取JS觸發(fā)模塊中的參數(shù)數(shù)據(jù),再把參數(shù)數(shù)據(jù)發(fā)送給組件管理類的原生功能調(diào)用方法;
[0073]組件管理類中的原生功能調(diào)用方法在判斷調(diào)用方式為異步調(diào)用時(shí),實(shí)例化新線程,在新線程中根據(jù)組件ID調(diào)用對應(yīng)的功能組件,啟動(dòng)新線程后主線程原路返回,所述新線程在完成后把執(zhí)行結(jié)果與Callbackld綁定后放入消息隊(duì)列中;組件管理類中的原生功能調(diào)用方法在判斷調(diào)用方式為同步調(diào)用時(shí),在主線程中根據(jù)組件ID調(diào)用對應(yīng)的功能組件,并在調(diào)用完畢后將執(zhí)行結(jié)果原路返回;
[0074 ]檢索消息模塊中的具有J a V a S c r i p t接口的原生對象中的接收J(rèn) S消息方法獲取J S觸發(fā)模塊中的Ca 11 backl d,并根據(jù)Ca 11 back I d從消息隊(duì)列中查詢結(jié)果,并在有對應(yīng)的結(jié)果時(shí)將結(jié)果原路返回到網(wǎng)頁中,對應(yīng)該Callbackld的一個(gè)異步調(diào)用結(jié)束。
[0075]其中:所述的啟動(dòng)輪詢?yōu)?以預(yù)設(shè)時(shí)間間隔調(diào)用prompt()方法,prompt ()方法再觸發(fā)JS觸發(fā)模塊中的經(jīng)過重寫的提示對話框方法。
[0076]綜上所述,實(shí)施本發(fā)明的移動(dòng)平臺(tái)上JavaScript調(diào)用原生功能的方法以及系統(tǒng),具有以下有益效果:本發(fā)明重寫了提示對話框方法,根據(jù)重寫后的方法中的參數(shù)可以確定執(zhí)行同步調(diào)用還是異步調(diào)用,并對于異步調(diào)用的情況,通過新線程執(zhí)行完原生功能,并把結(jié)果放到了消息隊(duì)列中,通過Prompt輪詢可以在重寫的提示對話框方法的基礎(chǔ)上,從消息隊(duì)列讀取異步調(diào)用的返回結(jié)果。因此,本發(fā)明解決了 JavaScript不能異步調(diào)用原生功能的缺陷,統(tǒng)一了調(diào)用的模式,提高了JavaScript與原生功能互相調(diào)用的靈活性。
[0077]上面結(jié)合附圖對本發(fā)明的實(shí)施例進(jìn)行了描述,但是本發(fā)明并不局限于上述的【具體實(shí)施方式】,上述的【具體實(shí)施方式】僅僅是示意性的,而不是限制性的,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不脫離本發(fā)明宗旨和權(quán)利要求所保護(hù)的范圍情況下,還可做出很多形式,這些均屬于本發(fā)明的保護(hù)之內(nèi)。
【主權(quán)項(xiàng)】
1.一種移動(dòng)平臺(tái)上JavaScript調(diào)用原生功能的方法,其特征在于,所述方法包括: SIJavaScript在調(diào)用原生功能時(shí)觸發(fā)瀏覽器控件中的經(jīng)過重寫的提示對話框方法,所述JavaScript在網(wǎng)頁加載時(shí)啟動(dòng)輪詢以不斷地觸發(fā)所述提示對話框方法; 52、經(jīng)過重寫的提示對話框方法在觸發(fā)后,首先對其參數(shù)進(jìn)行解析,如果根據(jù)解析結(jié)果判斷執(zhí)行原生功能,則繼續(xù)對參數(shù)進(jìn)行解析以獲取功能組件信息和調(diào)用方式,再執(zhí)行步驟S3并結(jié)束;如果根據(jù)解析結(jié)果判斷查找消息隊(duì)列則執(zhí)行步驟S4并結(jié)束; 53、根據(jù)開放的JavaScript接口實(shí)現(xiàn)原生功能的調(diào)用,如果調(diào)用方式為異步調(diào)用,貝1J實(shí)例化新線程,在新線程中根據(jù)所述功能組件信息調(diào)用對應(yīng)的功能組件,啟動(dòng)新線程后主線程原路返回,所述新線程在完成后把結(jié)果放入消息隊(duì)列中;如果調(diào)用方式為同步調(diào)用,則在主線程中根據(jù)所述功能組件信息調(diào)用對應(yīng)的功能組件,并在調(diào)用完畢后將執(zhí)行結(jié)果原路返回; 54、根據(jù)開放的JavaScri pt接口實(shí)現(xiàn)從所述消息隊(duì)列中檢索結(jié)果。2.根據(jù)權(quán)利要求1所述的移動(dòng)平臺(tái)上JavaScript調(diào)用原生功能的方法,其特征在于,所述步驟S2包括: 521、如果提示對話框方法判斷出默認(rèn)字符串參數(shù)的前綴與預(yù)設(shè)的表示執(zhí)行原生功能的字符串相同,則根據(jù)默認(rèn)字符串參數(shù)的位于前綴后面的字符串獲取以下參數(shù)數(shù)據(jù):與功能組件唯一對應(yīng)的組件ID、與返回結(jié)果唯一對應(yīng)的Callbackld、調(diào)用方式以及其他參數(shù),再執(zhí)行步驟S3并結(jié)束; 522、如果提示對話框方法判斷默認(rèn)字符串參數(shù)的前綴與預(yù)設(shè)的表示查找消息隊(duì)列的字符串相同,則根據(jù)默認(rèn)字符串參數(shù)的位于前綴后面的字符串獲取與返回結(jié)果唯一對應(yīng)的Callbackld,再執(zhí)行S4并結(jié)束; 523、如果前綴不屬于以上的兩種情況,則執(zhí)行默認(rèn)的操作,彈出提示對話框。3.根據(jù)權(quán)利要求2所述的移動(dòng)平臺(tái)上JavaScript調(diào)用原生功能的方法,其特征在于,所述步驟S3包括: 531、將S21中獲取的參數(shù)數(shù)據(jù)發(fā)送給瀏覽器控件中的具有JavaScript接口的原生對象中的原生功能調(diào)用方法,原生對象再把參數(shù)數(shù)據(jù)發(fā)送給組件管理類的原生功能調(diào)用方法,組件管理類中的原生功能調(diào)用方法在判斷調(diào)用方式為異步調(diào)用時(shí),執(zhí)行步驟S32并結(jié)束,在判斷調(diào)用方式為同步調(diào)用時(shí),執(zhí)行步驟S33并結(jié)束; 532、實(shí)例化新線程,在新線程中根據(jù)組件ID調(diào)用對應(yīng)的功能組件,啟動(dòng)新線程后主線程原路返回,所述新線程在完成后把執(zhí)行結(jié)果與Callbackld綁定后放入消息隊(duì)列中; 533、在主線程中根據(jù)組件ID調(diào)用對應(yīng)的功能組件,并在調(diào)用完畢后將執(zhí)行結(jié)果原路返回; 534、將S22中獲取的Callbackld發(fā)送給瀏覽器控件中的具有JavaScript接口的原生對象中的接收J(rèn)S消息方法,接收J(rèn)S消息方法根據(jù)Cal lbackld從消息隊(duì)列中查詢結(jié)果,并在有對應(yīng)的結(jié)果時(shí)將結(jié)果原路返回到網(wǎng)頁中。4.根據(jù)權(quán)利要求1所述的移動(dòng)平臺(tái)上JavaScript調(diào)用原生功能的方法,其特征在于,所述的啟動(dòng)輪詢?yōu)?以預(yù)設(shè)時(shí)間間隔調(diào)用prompt()方法,promptO方法再觸發(fā)經(jīng)過重寫的提示對話框方法。5.—種移動(dòng)平臺(tái)上JavaScript調(diào)用原生功能的系統(tǒng),其特征在于,包括位于前端邏輯層的JavaScript模塊和位于底層原生層中的瀏覽器控件、組件管理類、消息隊(duì)列、執(zhí)行多種原生功能的多種功能組件;所述JavaScript模塊包括調(diào)用原生功能子模塊和輪詢子模塊,瀏覽器控件包括JS觸發(fā)模塊、開放有JavaScript接口的執(zhí)行原生功能模塊、開放有JavaScript接口的檢索消息模塊; 調(diào)用原生功能子模塊用于觸發(fā)JS觸發(fā)模塊中的經(jīng)過重寫的提示對話框方法;輪詢子模塊用于在網(wǎng)頁加載時(shí)啟動(dòng)輪詢以不斷地觸發(fā)所述JS觸發(fā)模塊中的提示對話框方法; JS觸發(fā)模塊中的經(jīng)過重寫的提示對話框方法在執(zhí)行時(shí),首先對其參數(shù)進(jìn)行解析,如果根據(jù)解析結(jié)果判斷執(zhí)行原生功能,則繼續(xù)對參數(shù)進(jìn)行解析以獲取功能組件信息和調(diào)用方式,與執(zhí)行原生功能模塊的JavaScript接口配合以實(shí)現(xiàn)原生功能的調(diào)用;如果根據(jù)解析結(jié)果判斷查找消息隊(duì)列則與檢索消息模塊的JavaScript接口配合以實(shí)現(xiàn)從消息隊(duì)列中檢索結(jié)果; 組件管理類用于與執(zhí)行原生功能模塊配合實(shí)現(xiàn)原生功能的調(diào)用,如果調(diào)用方式為異步調(diào)用,則實(shí)例化新線程,在新線程中根據(jù)所述功能組件信息調(diào)用對應(yīng)的功能組件,啟動(dòng)新線程后主線程原路返回,所述新線程在完成后把結(jié)果放入消息隊(duì)列中;如果調(diào)用方式為同步調(diào)用,則在主線程中根據(jù)所述功能組件信息調(diào)用對應(yīng)的功能組件,并在調(diào)用完畢后將執(zhí)行結(jié)果原路返回。6.根據(jù)權(quán)利要求5所述的移動(dòng)平臺(tái)上JavaScript調(diào)用原生功能的系統(tǒng),其特征在于,JS觸發(fā)模塊中的經(jīng)過重寫的提示對話框方法具體包括: 如果提示對話框方法判斷出默認(rèn)字符串參數(shù)的前綴與預(yù)設(shè)的表示執(zhí)行原生功能的字符串相同,則根據(jù)默認(rèn)字符串參數(shù)的位于前綴后面的字符串獲取以下參數(shù)數(shù)據(jù):與功能組件唯一對應(yīng)的組件ID、與返回結(jié)果唯一對應(yīng)的Callbackld、調(diào)用方式以及其他參數(shù); 如果提示對話框方法判斷默認(rèn)字符串參數(shù)的前綴與預(yù)設(shè)的表示查找消息隊(duì)列的字符串相同,則根據(jù)默認(rèn)字符串參數(shù)的位于前綴后面的字符串獲取與返回結(jié)果唯一對應(yīng)的Callbackld; 如果前綴不屬于以上的兩種情況,則執(zhí)行默認(rèn)的操作,彈出提示對話框。7.根據(jù)權(quán)利要求6所述的移動(dòng)平臺(tái)上JavaScript調(diào)用原生功能的系統(tǒng),其特征在于, 所述執(zhí)行原生功能模塊的具有JavaScript接口的原生對象中的原生功能調(diào)用方法獲取JS觸發(fā)模塊中的參數(shù)數(shù)據(jù),再把參數(shù)數(shù)據(jù)發(fā)送給組件管理類的原生功能調(diào)用方法; 組件管理類中的原生功能調(diào)用方法在判斷調(diào)用方式為異步調(diào)用時(shí),實(shí)例化新線程,在新線程中根據(jù)組件ID調(diào)用對應(yīng)的功能組件,啟動(dòng)新線程后主線程原路返回,所述新線程在完成后把執(zhí)行結(jié)果與Callbackld綁定后放入消息隊(duì)列中;組件管理類中的原生功能調(diào)用方法在判斷調(diào)用方式為同步調(diào)用時(shí),在主線程中根據(jù)組件ID調(diào)用對應(yīng)的功能組件,并在調(diào)用完畢后將執(zhí)行結(jié)果原路返回; 檢索消息模塊中的具有JavaScript接口的原生對象中的接收J(rèn)S消息方法獲取JS觸發(fā)模塊中的Cal lbackld,并根據(jù)Cal lbackld從消息隊(duì)列中查詢結(jié)果,并在有對應(yīng)的結(jié)果時(shí)將結(jié)果原路返回到網(wǎng)頁中。8.根據(jù)權(quán)利要求5所述的移動(dòng)平臺(tái)上JavaScript調(diào)用原生功能的系統(tǒng),其特征在于,所述的啟動(dòng)輪詢?yōu)?以預(yù)設(shè)時(shí)間間隔調(diào)用prompt ()方法,prompt ()方法再觸發(fā)JS觸發(fā)模塊中的經(jīng)過重寫的提示對話框方法。
【專利摘要】一種移動(dòng)平臺(tái)上JavaScript調(diào)用原生功能的方法以及系統(tǒng),方法包括:S1、JavaScript在調(diào)用原生功能時(shí)觸發(fā)經(jīng)過重寫的提示對話框方法,在網(wǎng)頁加載時(shí)啟動(dòng)輪詢以不斷地觸發(fā)提示對話框方法;S2、提示對話框方法對其參數(shù)進(jìn)行解析,如判斷執(zhí)行原生功能,則繼續(xù)對參數(shù)進(jìn)行解析以獲取功能組件信息和調(diào)用方式,再執(zhí)行S3并結(jié)束;如判斷查找消息隊(duì)列則執(zhí)行S4;S3、根據(jù)開放的JavaScript接口實(shí)現(xiàn)原生功能的調(diào)用,如為異步調(diào)用,則在新線程中調(diào)用對應(yīng)的功能組件,新線程在完成后把結(jié)果放入消息隊(duì)列中;如為同步調(diào)用,則在主線程中調(diào)用功能組件;S4、根據(jù)開放的JavaScript接口實(shí)現(xiàn)從消息隊(duì)列中檢索結(jié)果。本發(fā)明可異步調(diào)用原生功能,統(tǒng)一了調(diào)用的模式,提高了JavaScript與原生功能互相調(diào)用的靈活性。
【IPC分類】G06F17/30, G06F9/44
【公開號(hào)】CN105468369
【申請?zhí)枴緾N201510812727
【發(fā)明人】鄭彬
【申請人】深圳聯(lián)友科技有限公司
【公開日】2016年4月6日
【申請日】2015年11月19日