我如何调用javascript函数并从javascript函数获取返回值 [英] How I can call javascript function and get the return value from javascript function

查看:196
本文介绍了我如何调用javascript函数并从javascript函数获取返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从我的Java Android上的JS函数中获取值

I want to get the value from my JS function on my Java Android

示例,

function getStringToMyAndroid(stringFromAndroid){
   var myJsString = "Hello World" + ;
   return myJsString;
}

现在我想调用函数 getStringToMyAndroid(来自android的这个字符串 )并在我的Android上获得返回的 myJsString ,因此我可以稍后在我的Android上使用 myJsString ;

Now I want calling function getStringToMyAndroid("This string from android") and get the returning myJsString on my Android, so I can use myJsString later on my Android;

我知道我可以使用

WebView.loadUrl("javascript:getStringToMyAndroid('This string from android')")

调用JS函数但我想从JS函数中获取字符串或值

to call the JS function but I want to get the string or value from JS function

注意:我的Android运行在最低SDK Android 3.0蜂窝

NOTE: My android running on minimum SDK Android 3.0 honeycomb

推荐答案

对于API级别< 19只有使用JavascriptInterface(我的首选方法,下面)或者劫持OnJsAlert方法并使用 alert()对话框的解决方法。这意味着您不能将 alert()函数用于其预期目的。

For API Level < 19 there are only workarounds of either using a JavascriptInterface (my preferred method, below) or else hijacking the OnJsAlert method and using the alert() dialog instead. That then means you can't use the alert() function for its intended purpose.

查看:

WebView.addJavascriptInterface(new JsInterface(), "AndroidApp");
WebView.loadUrl("javascript:doStringToMyAndroid('This string from android')")

JsInterface:

public class JsInterface() {
    @JavascriptInterface
    void receiveString(String value) {
        // String received from WebView
        Log.d("MyApp", value);
    }
}

Javascript:

function doStringToMyAndroid(stringFromAndroid){
   var myJsString = "Hello World" + ;
   // Call the JavascriptInterface instead of returning the value
   window.AndroidApp.receiveString(myJsString);
}

但是在API Level 19+上,我们现在有了evaluateJavascript方法:

But on API Level 19+, we now have the evaluateJavascript method:

WebView.evaluateJavascript("(function() { return getStringToMyAndroid('" + myJsString + "'); })();", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String s) {
        Log.d("LogName", s); // Returns the value from the function
    }
});

这篇关于我如何调用javascript函数并从javascript函数获取返回值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆