Android三種Webview獲取Javascript返回值/屬性方式
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1.通過(guò)反射(各版本API,不一樣),如下為4.2.2源碼的方式:通過(guò)android.webkit.WebViewClassic的fromWebView拿到webview對(duì)應(yīng)的WebViewClassic實(shí)例1,通過(guò)該實(shí)例1的getWebViewCore方法拿到對(duì)應(yīng)的WebViewCore實(shí)例2,通過(guò)實(shí)例2拿到 mBrowserFrame實(shí)例3,通過(guò)實(shí)例3的stringByEvaluatingJavaScriptFromString方法拿到j(luò)s的屬性或方法返回值。
2.通過(guò)setJavascriptInterface方式,暴漏webview中的對(duì)象到JS中(4.2之前android有系統(tǒng)漏洞問(wèn)題),該對(duì)象不斷的向webview推送JS的方法的返回值或?qū)傩灾怠?/p>
3.webview定義事先好捕獲URL的格式;JS在執(zhí)行完方法后通過(guò)發(fā)起偽HTTP鏈接(并不是真正HTTP,而是為了webview的onLoadResource方法能夠捕獲);webview在onLoadResource中去捕獲這種偽HTTP,根據(jù)事先定義好的URL格式,去獲得已定義好的JS方法的返回值或?qū)傩灾怠?/p>