基于安卓平臺(tái)的Webview中輸入框正確顯示數(shù)據(jù)的方法
【專利摘要】基于安卓平臺(tái)的Webview中輸入框正確顯示數(shù)據(jù)的方法,包括,在上一個(gè)input標(biāo)簽.blur()失去焦點(diǎn)的函數(shù)中進(jìn)行數(shù)據(jù)格式化,然后在下一個(gè)input標(biāo)簽.focus()獲取焦點(diǎn)的函數(shù)中對(duì)數(shù)據(jù)進(jìn)行一次重置的操作,進(jìn)行賦值還原或者賦值為空;所述賦值為原值,是指輸入框內(nèi)的值不變;所述賦值為空即輸入框內(nèi)的值清空。清空是通過(guò)父標(biāo)簽逐級(jí)查找的方式查找到唯一的Editview輸入框控件,采用在切換輸入框的時(shí)候,清空該控件的內(nèi)容,從而在應(yīng)用端操作webview的數(shù)據(jù)。本發(fā)明能夠使用復(fù)雜的Javascript進(jìn)行Input標(biāo)簽中數(shù)據(jù)的格式化,并且不會(huì)因?yàn)橛布蛙浖窒薅霈F(xiàn)不能正常顯示的情況。
【專利說(shuō)明】基于安卓平臺(tái)的Webview中輸入框正確顯示數(shù)據(jù)的方法
【【技術(shù)領(lǐng)域】】
[0001]本發(fā)明屬于軟件【技術(shù)領(lǐng)域】,具體是指基于安卓平臺(tái)的Webview中輸入框正確顯示數(shù)據(jù)的方法。
【【背景技術(shù)】】
[0002]基于Android Webview技術(shù)開(kāi)發(fā)的網(wǎng)頁(yè)程序,其架構(gòu)分成Webcore核心層和Android顯示層,而Webcore解析出網(wǎng)頁(yè)的標(biāo)簽都要通過(guò)Android表現(xiàn)層表現(xiàn)出來(lái),目前Android表現(xiàn)層定義的輸入框控件為一個(gè)對(duì)應(yīng)網(wǎng)頁(yè)中的多個(gè)標(biāo)簽,會(huì)導(dǎo)致輸入數(shù)據(jù)出現(xiàn)異
[0003]Webview是Html和Android內(nèi)部的橋梁控件,Webview負(fù)責(zé)Html的解析和顯不工作,對(duì)于Input輸入框,Html端表現(xiàn)為〈input〉標(biāo)簽形式,當(dāng)Webview加載Html時(shí),解析Html并且顯示在屏幕上。對(duì)于Input輸入框標(biāo)簽,為了實(shí)現(xiàn)輸入功能,Webview自創(chuàng)一個(gè)Android輸入控件Editview,而且只創(chuàng)建一個(gè)。輸入的流程是,點(diǎn)擊Input標(biāo)簽,Input標(biāo)簽和Android自創(chuàng)的輸入控件進(jìn)行綁定,綁定的目的,一個(gè)是為了在Input上面覆蓋顯示,另外一個(gè)就是數(shù)據(jù)共享,即Input標(biāo)簽和Android輸入控件數(shù)據(jù)共享。這時(shí)數(shù)據(jù)交互呈現(xiàn)兩種方式,一個(gè)是當(dāng)Input標(biāo)簽數(shù) 據(jù)有更新時(shí)(這種情況就是通過(guò)Javascript操作Input標(biāo)簽),另一種方式就是當(dāng)Android輸入控件數(shù)據(jù)更新時(shí)(大多情況就是因?yàn)槭褂幂斎敕ㄟM(jìn)行輸入,直接將數(shù)據(jù)寫(xiě)在Android輸入控件中)。因?yàn)榇嬖跀?shù)據(jù)綁定,所以,當(dāng)Input標(biāo)簽數(shù)據(jù)有變化時(shí),會(huì)更新Android輸入控件。當(dāng)Android輸入控件有變化時(shí)會(huì)更新到Input標(biāo)簽中。
[0004]而Javascript端操作和Android端操作,分屬不同的線程。而且,最主要的問(wèn)題還在于,所有的Input標(biāo)簽都共用一個(gè)Android輸入控件,這就使使用Javascript特效進(jìn)行輸入控制時(shí),當(dāng)切換輸入框時(shí),因?yàn)檎{(diào)用時(shí)序等原因,使控件的數(shù)據(jù)或者得不到及時(shí)更新,或者延時(shí)更新,這樣就會(huì)出現(xiàn),目前呈現(xiàn)的躥數(shù)據(jù)問(wèn)題。
[0005]如圖1所示,由于Webview發(fā)起Javascript數(shù)據(jù)操作和Editview重繪操作分屬兩個(gè)不同的線程進(jìn)行,所以運(yùn)行時(shí)序未知,而正常的順序應(yīng)該是,先進(jìn)行數(shù)據(jù)操作改變當(dāng)前輸入標(biāo)簽的值,然后進(jìn)行Editview換位重繪綁定操作,因?yàn)檫\(yùn)行時(shí)序因?yàn)閮蓚€(gè)線程而未知,所以會(huì)出現(xiàn)躥數(shù)據(jù)的問(wèn)題。
[0006]有鑒于此,本發(fā)明人針對(duì)現(xiàn)有技術(shù)的缺陷深入研究,遂有本案產(chǎn)生。
【
【發(fā)明內(nèi)容】
】
[0007]本發(fā)明所要解決的技術(shù)問(wèn)題在于提供一種基于安卓平臺(tái)的Webview中輸入框正確顯示數(shù)據(jù)的方法。
[0008]本發(fā)明是這樣實(shí)現(xiàn)的:
[0009]—種基于安卓平臺(tái)的Webview中輸入框正確顯示數(shù)據(jù)的方法,包括如下步驟:
[0010]在上一個(gè)input標(biāo)簽.blur ()失去焦點(diǎn)的函數(shù)中進(jìn)行數(shù)據(jù)格式化,然后在下一個(gè)input標(biāo)簽.focus ()獲取焦點(diǎn)的函數(shù)中對(duì)數(shù)據(jù)進(jìn)行一次重置的操作,進(jìn)行賦值還原或者賦值為空;所述賦值為原值,是指輸入框內(nèi)的值不變;所述賦值為空即輸入框內(nèi)的值清空。
[0011]進(jìn)一步地,所述清空,為通過(guò)父標(biāo)簽逐級(jí)查找的方式查找到唯一的Editview輸入框控件,采用在切換輸入框的時(shí)候,清空該控件的內(nèi)容,從而在應(yīng)用端操作webview的數(shù)據(jù)。
[0012]本發(fā)明的優(yōu)點(diǎn)在于:基于Webview網(wǎng)頁(yè)應(yīng)用程序中,能夠使用復(fù)雜的Javascript進(jìn)行Input標(biāo)簽中數(shù)據(jù)的格式化,并且不會(huì)因?yàn)橛布蛙浖窒薅霈F(xiàn)不能正常顯示的情況。
【【專利附圖】
【附圖說(shuō)明】】
[0013]下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的描述。
[0014]圖1是本發(fā)明中輸入控制時(shí)序圖。
【【具體實(shí)施方式】】
[0015]Webview是Android實(shí)現(xiàn)瀏覽器技術(shù)的控件,其核心技術(shù)為Webcore。利用Webview能夠?qū)崿F(xiàn)瀏覽器功能,包括使用Javascript技術(shù)?,F(xiàn)有技術(shù)中,當(dāng)對(duì)Webview中Input標(biāo)簽使用Javascript進(jìn)行清空、數(shù)據(jù)格式化等復(fù)雜操作時(shí),出現(xiàn)Webview中Input標(biāo)簽數(shù)據(jù)竄位異常的情況。找到問(wèn)題原因,則本發(fā)明為解決問(wèn)題提供具體的依據(jù),既然呈現(xiàn)的現(xiàn)象是Javascript端的代碼后于Editview重繪進(jìn)行,只能是提高Javascript的運(yùn)行時(shí)間,而這方面的技術(shù)因軟硬件瓶頸而難以解決。
[0016]為了能夠使用Webview并解決躥數(shù)據(jù)的問(wèn)題,使用以下的技術(shù)方案,即在上一個(gè)input標(biāo)簽.blur ()失去焦點(diǎn)的函數(shù)中進(jìn)行數(shù)據(jù)格式化,然后在下一個(gè)input標(biāo)簽.focus()獲取焦點(diǎn)的函數(shù)中對(duì)數(shù)據(jù)進(jìn)行一次重置的操作,進(jìn)行賦值還原或者賦值為空,賦值為原值即輸入框內(nèi)的值不變,賦值為空即輸入框內(nèi)的值清空。
[0017]Javascript代碼示例如下:
[0018]$("input").focus(function ( ) {
sleep(200);
var tmptxt=$(this).va丨();
$(this).val(tmptxt);
}
function sleep(milliSecond) {
var startTime = new Date ( ).getTime ();
while(new Date ( ).getTime ( ) <= milliSecond + startTime) {
}
}
[0019]其中清空問(wèn)題的解決方式:
[0020]采用應(yīng)用端主動(dòng)清空Editview的方式進(jìn)行,因?yàn)閃ebview中的Editview控件不直接提供修改,所以通過(guò)父標(biāo)簽逐級(jí)查找的方式查找到唯一的Editview輸入框控件,采用在切換輸入框的時(shí)候,清空該控件的內(nèi)容,從而在應(yīng)用端操作webview的數(shù)據(jù),解決目前存在的不清空問(wèn)題。
[0021]修 改代碼如下:
[0022]
【權(quán)利要求】
1.基于安卓平臺(tái)的Webview中輸入框正確顯示數(shù)據(jù)的方法,其特征在于:包括如下步驟: 在上一個(gè)input標(biāo)簽.blur()失去焦點(diǎn)的函數(shù)中進(jìn)行數(shù)據(jù)格式化,然后在下一個(gè)input標(biāo)簽.focus ()獲取焦點(diǎn)的函數(shù)中對(duì)數(shù)據(jù)進(jìn)行一次重置的操作,進(jìn)行賦值還原或者賦值為空;所述賦值為原值,是指輸入框內(nèi)的值不變;所述賦值為空即輸入框內(nèi)的值清空。
2.如權(quán)利要求1所述的基于安卓平臺(tái)的Webview中輸入框正確顯示數(shù)據(jù)的方法,其特征在于:所述清空,為通過(guò)父標(biāo)簽逐級(jí)查找的方式查找到唯一的Editview輸入框控件,采用在切換輸入框的時(shí)候,清空該控件的內(nèi)容,從而在應(yīng)用端操作webview的數(shù)據(jù)。
【文檔編號(hào)】G06F9/44GK103473054SQ201310403085
【公開(kāi)日】2013年12月25日 申請(qǐng)日期:2013年9月6日 優(yōu)先權(quán)日:2013年9月6日
【發(fā)明者】呂宏偉, 張登峰, 余杭軍 申請(qǐng)人:福建升騰資訊有限公司