首先标题本来想写成"安卓获取HTML调用js之后的源码"的,但是发现有点绕,哈哈,所以就简单写了.
关于安卓获取html源码,方法很简单,通过webview与js交互即可获取.说一下思路,安卓端新建接口,在接口中写需要与js端交互的方法,然后webview注册接口.在js端调用.具体代码如下
1.新建接口,记得将需要JS调用的方法加如图注释
class AndroidInterface { @JavascriptInterface public void backActivity() { // 关闭本界面 finish(); } }
2.注册接口,记得在loadURL之前注册.其中第一个参数为以上新建接口类,第二个参数为自定义字符串,该字符串需要在JS中使用,一定要记住改字符串.
mWebView.addJavascriptInterface(new AndroidInterface(), "android");
3.JS调用改方法,即可实现js调用安卓本地代码
function load() { //此处第二个名为"android"的字符串即为上面注册字符串,注意一致 window.android.backActivity(); }
4.安卓调用JS方法,代码如下
//第一个参数为js中的方法名,该段代码每执行一次则调用js方法一次 mWebview.evaluateJavascript("window.hasUserEditData()", new ValueCallback<String>() { @Override public void onReceiveValue(String value) { //这里为返回值 //todo } });
5.重点说一下此次开发过程中遇到的问题.因为业务需要,Html执行JS代码会动态添加数据,然后安卓获取执行之后html代码,并保存到文件中,但是一直发现安卓获取到的Html代码为执行JS之前的代码.通过尝试后发现使用jquery执行val时,获取到代码无动态数据,但是执行attr方法操作时,可以获取到动态数据代码.至于具体原因,需要进一步思考.问题已解决,花费了很久.