webview调用javascript获得返回值
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>test</title>
<script type="text/javascript">
function test_function_add(a,b)
{
    return a+b;
}
function android_ret(tag,val)
{
    alert(tag+":"+val);
}
function android_excute(tag,js)
{
    var retval = eval(js);
    android_ret(tag,retval);
}
function getCellString(row, column) 
{
    return Report.getCellString(row,column);
}
function getCookie(name)//取cookies函数           
{   
    var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));   
     if(arr != null){   
            test.getCookie(name,unescape(arr[2]));  
     }else{
            test.getCookie(name,"null");   
     } 
}
</script>
</head>

<body>
</body>
</html>

 安卓中,想要调用html里面的方法,并且获得返回值。应该怎么去获得?

webView.loadUrl("javascript:android_excute('test','test_function_add(1,6)'");
  webView.addJavascriptInterface(new JavaScriptInterface(), "Report");
  webView.loadUrl("javascript:getCellString('Report',getCellString(5,7)");

这样都获得不了。麻烦问下具体应该怎样去获得

1个回答

[code="java"]执行js函数的代码
webView.loadUrl("javascript:resetFontSize(20px)"); 这句
不能直接在加载页面的下面。

因为loadUrl是个异步的加载方法,一开始html页面并没有加载完,
document也没生成完,所以resetFontSize方法无法解析document树,
把代码改成这样
webView.loadUrl("file:///android_asset/110711001.html");

    WebViewClient wvc = new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            webView.loadUrl("javascript:resetFontSize('20px')");
            super.onPageFinished(view, url);
        }
    };
    webView.setWebViewClient(wvc);

}

我已经测试通过。[/code]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问