我按网上的方法,在Android 嵌入了一个 html页面,html 里面的button可以调用 android 的方法,android里面的button也可以调用 html 里面的 javascript函数, 问题是: html里面的js函数却不能正常调用,朋友们帮我看下问题在哪儿,本人新手。Activity:
            mWebView = (WebView) findViewById(R.id.webview);
            WebSettings mWebSettings = mWebView.getSettings();
            //加上这句话才能使用javascript方法
            mWebSettings.setJavaScriptEnabled(true);
            
            //增加接口方法,让html页面调用
            mWebView.addJavascriptInterface(new Object() {
                    //这里可以正常调用
                    public void startBaidu() {
                     Uri uri = Uri.parse("http://www.baidu.com"); 
                     Intent it  = new Intent(Intent.ACTION_VIEW,uri); 
                     startActivity(it);                     }
            }, "demo");
            
            mWebView.loadUrl("file:///android_asset/login.html");
            
            //android 调用 html 的代码  //这里也可以正常调用
            mButton = (Button) findViewById(R.id.button);
            //给button添加事件响应,执行JavaScript的fillContent()方法
            mButton.setOnClickListener(new Button.OnClickListener() {
                    public void onClick(View v) {
                            mWebView.loadUrl("javascript:fillContent()");
                    }
            });login.html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>login </title>
</head>
<script>
function login(){
    alert("登陆成功");


</script>

     <mce:script language="javascript"><!--                function fillContent(){
                        document.getElementById("content").innerHTML = "你点击了  Android button.";
                }

// --></mce:script> 

<body>
<p><a onClick="window.demo.startBaidu()" href="">html startBaidu</a></p>
                  <p><button onclick="login();">确定</button></p> </body>
</html>其他都正常,就是 上面的 “确定” 点击无效,无论把login()写在哪儿都不行,直接写成
<button onclick="alert(1);">确定</button> 也没有反应
另外还有个小疑问,如果页面都能用 html 嵌入实现,那还要android的框架做什么。

解决方案 »

  1.   

    Html的方式太慢了,交互性太差
      

  2.   

    要对webView设置一下,webViewSetting里名字好像叫enableScripts方法
      

  3.   

    这个已经设过了:mWebSettings.setJavaScriptEnabled(true);
      

  4.   

    // webView.setWebChromeClient(new WebChromeClient()
    // {
    //
    // @Override
    // public boolean onJsAlert(WebView view, String url, String message,
    // JsResult result)
    // {
    // System.out.println("url:" + url);
    // return false;
    // }
    //
    // });
      

  5.   

    哦onJsAlert要返回true就可以了。还要类似的 onJsPrompt看看文档就行 都差不多。还有诸如webClient类也可以控制浏览器的许多行为。
      

  6.   


    @Override
                public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
                    // return super.onJsAlert(view, url, message, result);
                    Builder builder = new Builder(mContext);
                    builder.setTitle(mContext.getText(R.string.dialog_tip_title));
                    builder.setMessage(message);
                    builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() {                    public void onClick(DialogInterface dialog, int which) {
                            result.confirm();
                        }
                    });
                    builder.setCancelable(false);
                    builder.create();
                    builder.show();
                    return true;
                }
    重写这个方法,就像这样 把网页里的alert信息放到android里