js调用android代码怎么写,Android端使用WebView注入一段js代码实现js调用android

需求:为网页上个链接增加点击事件,但是这个链接无法增加js代码

url:http://public.rongcloud.cn/view/D4F444BE2D94D760329F3CF38B4AE35C

网页截图:

d7a59bd803bc0d9f9b9c89df5ee9aa4d.png

需要给“投融资讯“四个字设置点击事件

但是观察源码

发货房间很干净或

2017-01-08

投融资讯

并没有具体的onclick事件,怎么办呢?

1、首先在Chrome上写了端测试代码,测试没问题

var child=document.getElementsByTagName('a')[0];

child.οnclick=function(){

userIdClick();

};

function userIdClick(){

myObj.getClose();

};

2、然后使用安卓端注入进来

webview.getSettings().setJavaScriptEnabled(true);

webview.addJavascriptInterface(new JSObject(), "myObj");

webview.setWebViewClient(new WebViewClient() {

public boolean shouldOverrideUrlLoading(WebView view, String url) {

Toast.makeText(MainActivity.this, "wodo-7-", Toast.LENGTH_SHORT).show();

view.loadUrl(url);

return true;

}

@Override

public void onPageFinished(WebView view, String url) {

super.onPageFinished(view, url);

String  js = "var script = document.createElement('script');";

js+= "script.type = 'text/javascript';";

js+="var child=document.getElementsByTagName('a')[0];";

js+="child.οnclick=function(){userIdClick();};";

js+= "function userIdClick(){myObj.getClose();};";

webview.loadUrl("javascript:" + js);

}

});

class JSObject {

@JavascriptInterface

// sdk17版本以上加上注解

public String getData(String txt) {

return "12345678";

}

@JavascriptInterface

// sdk17版本以上加上注解

public void getClose() {

Toast.makeText(MainActivity.this, "dododo", Toast.LENGTH_SHORT)

.show();

// finish();

}

}

这样就可以实现点击调用本地方法了。

二、如果想获取html中某个内容

@Override

public void onPageFinished(WebView view, String url) {

super.onPageFinished(view, url);

String  js = "var script = document.createElement('script');";

js+= "script.type = 'text/javascript';";

js+="var child=document.getElementsByTagName('a')[0];";

js+="child.οnclick=function(){userIdClick();};";

js+= "function userIdClick(){myObj.getClose();};";

webview.loadUrl("javascript:" + js);

//view.loadUrl("javascript:window.myObj.showSource(document.getElementsByTagName('p')[1].innerHTML);");

view.loadUrl("javascript:myObj.showSource(document.getElementsByTagName('p')[0].innerHTML);");   //关键代码

}

});

/**

* 本地化JS对象(第一种方法)

*

* @author jiangwei1-g

*/

class JSObject {

@JavascriptInterface

// sdk17版本以上加上注解

public String getData(String txt) {

return "12345678";

}

@JavascriptInterface

// sdk17版本以上加上注解

public void getClose() {

Toast.makeText(MainActivity.this, "dododo", Toast.LENGTH_SHORT).show();

}

@JavascriptInterface

// sdk17版本以上加上注解

public void showSource(String html) { //关键代码

Toast.makeText(MainActivity.this, html, Toast.LENGTH_SHORT).show();

System.out.println("====>html="+html);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值