我想在android中调用Web页面中的JS与页面交互,HTML代码如下
<html>
<script language="javascript">
function wave() {
alert("1");
document.getElementById("droid").src="\testdemo\icon2.png";
alert("2");
}
</script>
<body>
<a onClick="window.demo.clickOnAndroid<img id="droid" src="\testdemo\icon.png"/><br>Click me!</a>
</body>
</html>
android中JAVA代码如下:
private WebView mWebView;
private Handler mHandler=new Handler();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView=(WebView)findViewById(R.id.mWebView);
WebSettings webSettings=mWebView.getSettings();
webSettings.setSaveFormData(false);
webSettings.setSavePassword(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(true);
webSettings.setAllowFileAccess(true);
mWebView.setWebChromeClient(new MyWebChromeClient());
mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");
mWebView.loadUrl("http://10.8.8.70:808/mobileweb/demo.html");
}
final class DemoJavaScriptInterface{
DemoJavaScriptInterface() {}
public void clickOnAndroid(){
//用handler来更新UI
mHandler.post(new Runnable(){
public void run(){
mWebView.loadUrl("javascript:wave()");
}
});
}
}
final class MyWebChromeClient extends WebChromeClient{
@Override
public boolean onJsAlert(WebView view, String url, String message,
final JsResult result) {
Log.d(LOG_TAG,message);
Toast.makeText(getApplicationContext(), message,Toast.LENGTH_SHORT).show();
//result.confirm();
return true;
}
}
页面能够打开,为什么它不执行JS方法呢?在线等,有结果马上结贴,谢谢各位了!
<html>
<script language="javascript">
function wave() {
alert("1");
document.getElementById("droid").src="\testdemo\icon2.png";
alert("2");
}
</script>
<body>
<a onClick="window.demo.clickOnAndroid<img id="droid" src="\testdemo\icon.png"/><br>Click me!</a>
</body>
</html>
android中JAVA代码如下:
private WebView mWebView;
private Handler mHandler=new Handler();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView=(WebView)findViewById(R.id.mWebView);
WebSettings webSettings=mWebView.getSettings();
webSettings.setSaveFormData(false);
webSettings.setSavePassword(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(true);
webSettings.setAllowFileAccess(true);
mWebView.setWebChromeClient(new MyWebChromeClient());
mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");
mWebView.loadUrl("http://10.8.8.70:808/mobileweb/demo.html");
}
final class DemoJavaScriptInterface{
DemoJavaScriptInterface() {}
public void clickOnAndroid(){
//用handler来更新UI
mHandler.post(new Runnable(){
public void run(){
mWebView.loadUrl("javascript:wave()");
}
});
}
}
final class MyWebChromeClient extends WebChromeClient{
@Override
public boolean onJsAlert(WebView view, String url, String message,
final JsResult result) {
Log.d(LOG_TAG,message);
Toast.makeText(getApplicationContext(), message,Toast.LENGTH_SHORT).show();
//result.confirm();
return true;
}
}
页面能够打开,为什么它不执行JS方法呢?在线等,有结果马上结贴,谢谢各位了!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货