首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Android WebView evaluateJavascript Uncaught

Android WebView evaluateJavascript Uncaught
EN

Stack Overflow用户
提问于 2017-04-27 03:50:29
回答 2查看 1.2K关注 0票数 0

目前,我正试图找出从android中调用javascript的最佳方法。

我试过AndroidJSCore,太棒了。但它会放大人肉的大小。然后我尝试深入WebView来调用javascript。但失败了。

活动情况如下:

代码语言:javascript
运行
复制
public class WebViewActivity extends AppCompatActivity {

private WebView webView;
private static final String TAG = WebViewActivity.class.getSimpleName();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_web_view);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    webView = (WebView)findViewById(R.id.webview);

    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    webSettings.setSupportZoom(true);
    webSettings.setDisplayZoomControls(true);

    webView.loadUrl("file:///android_asset/jsWeb/test.html");
    webView.setWebViewClient(new WebViewClient(){
        public void onPageFinished(WebView view, String url){

            String test1 = "permissionRegist(\"'function'\", [\"'319609831167500021'\",\"'319609831167500022'\",\"'319609831167500023'\",\"'419609839767500020'\",\"'644731700926740003'\",\"'644731700926740004'\",\"'854885785357389824'\",\"'854995673156816896'\",\"'855001385022918656'\",\"'855009454683459584'\",\"'855298661779902464'\",\"'855303143108513792'\",\"'855347061611171840'\",\"'855356859882803200'\"])";
            String test2 = "evalJSExpression()";

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                webView.evaluateJavascript(test1, new ValueCallback<String>() {
                    @Override
                    public void onReceiveValue(String s) {
                        Log.d(TAG, s);
                    }
                });

                webView.evaluateJavascript(test2, new ValueCallback<String>() {
                    @Override
                    public void onReceiveValue(String s) {
                        Log.d(TAG, s);
                    }
                });
            }
        }
    });

}

}

附加的文件有:

android.js

代码语言:javascript
运行
复制
function permissionRegist(type, list) {
    var s_permissionMap = new Map();
    s_permissionMap.set(type, list);
}

function evalJSExpression() {
    var result = 'dddddd';
    return result;
}

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>LogicalExpression</title>

    <!-- 导入script -->
    <script type="text/javascript" src="android.js"></script>
</head>

<body>
<!--<button onClick="permissionRegist()">点击读取文件</button>-->
</body>

</html>

但结果是:

代码语言:javascript
运行
复制
 I/chromium: [INFO:CONSOLE(2)] "Uncaught ReferenceError: Map is not defined", source: file:///android_asset/jsWeb/android.js (2)
 D/WebViewActivity: null
 D/WebViewActivity: "dddddd"
EN

回答 2

Stack Overflow用户

发布于 2017-04-27 04:44:32

Stack Overflow用户

发布于 2017-05-08 07:42:24

对于安卓来说,AndroidJSCore是一个很好的库,可以在没有WebView的情况下调用javascript。由于javascript的不同版本,本机WebView和犀牛似乎都可能存在一些可编译的问题。欢迎与我联系。当我有时间的时候我会找出原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43648340

复制
相关文章

相似问题

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