首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在安卓WebView中使用JavaScript evaluate()?

如何在安卓WebView中使用JavaScript evaluate()?
EN

Stack Overflow用户
提问于 2012-10-10 18:44:51
回答 1查看 2K关注 0票数 0

我想创建一个计算器,能够计算像3+(2-1)*2或(28.4/2-1.5)+(4-2)这样的字符串。我在网上搜索了一下,发现有可能使用一个启用了JavaScript的WebView来计算()字符串。

如何在WebView中使用JavaScript?

例如,我如何将input.getText().toString()传递给JavaScript并取回一个值?

如何在我的Java代码中访问JavaScript的evaluate()?

我找到了一个教程here。我必须将HTML文件加载到我的WebView中,不是吗?

EN

回答 1

Stack Overflow用户

发布于 2012-10-17 22:38:10

你走对了。为了在webview中使用javascript,在onPageFinish函数将url加载到webview之后(您可以在onPageFinish函数中捕捉到页面加载),您可以像这样调用js:

但首先,您必须使用以下代码块授予webview权限:

代码语言:javascript
复制
   settings.setJavaScriptEnabled(true);
   settings.setJavaScriptCanOpenWindowsAutomatically(true);

   webview.loadUrl("javascript:setPageHeight("+contentHeight+");"); // you can pass param with call js function at loaded page.
   webview.loadUrl("javascript:alert('test');"); // or you can call like this

对于使用js从webview获取结果参数,您必须有一个子类,如下所示:

代码语言:javascript
复制
   class JavaScriptInterface {
      public void showToast(String msg) {
           Toast.makeText(mContext, "Received Msg :" + msg,Toast.LENGTH_SHORT).show();
      }
   }

然后,在定义webview行将其提供给您的webview

代码语言:javascript
复制
   webview.addJavascriptInterface(new JavaScriptInterface(), "MyAndroid");

最后,在js中调用html中的java函数,如下所示:

代码语言:javascript
复制
<html>
  <head>
    <script type="text/javascript">
      function sayHello(msg){
        //calls Android's JavaScriptInterface Function
        MyAndroid.showToast(msg);
      }
    </script>
 </head>
 <body >
   <div onclick="sayHello('hello')"> Click Me !!  </div>
 </body>
</html>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12817499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档