【问题标题】:webview javascript interface function not found未找到 webview javascript 接口函数
【发布时间】:2014-08-25 10:50:27
【问题描述】:

我正在尝试将 json 数据从 java 传递到我的 Web 视图 这是我的代码:

界面:

public class ChartsJavaScriptInterface {
public ChartsJavaScriptInterface() {

}

    public String getData(){
        String s = "[ {date: 'A', frequency: .00100, date: '1-May-11', close: 1}," +
                    "{date: 'B', frequency: .01492, date: '2-May-14', close: 2}," +
                    "{date: 'C', frequency: .02782, date: '3-May-14', close: 3}," +
                    "{date: 'D', frequency: .04253, date: '4-May-15', close: 5}," +
                    "{date: 'D', frequency: .04253, date: '5-May-15', close: 4}," +
                    "{date: 'D', frequency: .04253, date: '7-May-15', close: 2},]";


        return s;
    }

}

活动:

    chartsView = (WebView) rootView.findViewById(R.id.charts_chart_view);

    chartsView.addJavascriptInterface(new ChartsJavaScriptInterface(), "chartInterface");
    chartsView.setWebChromeClient(new WebChromeClient());
    chartsView.getSettings().setJavaScriptEnabled(true);
    chartsView.setInitialScale(30);
    chartsView.getSettings().setBuiltInZoomControls(true);
    chartsView.getSettings().setLoadWithOverviewMode(true);
    chartsView.getSettings().setUseWideViewPort(true);
    chartsView.loadUrl("file:///android_asset/line.html");

html 文件:

....
draw(JSON.parse(chartInterface.getData()));
....

日志猫: 08-25 13:34:57.397:E/Web 控制台(19809):未捕获的类型错误: 对象 [object Object] 在 file:///android_asset/line.html:345 处没有方法 'getData'

我的错误是什么? 请帮忙?

谢谢, 宜兰

【问题讨论】:

    标签: javascript android android-webview


    【解决方案1】:

    相信你忘了加上JavascriptInterface注解:

    @JavascriptInterface
    public String getData(){
        String s = "[ {date: 'A', frequency: .00100, date: '1-May-11', close: 1}," +
                    "{date: 'B', frequency: .01492, date: '2-May-14', close: 2}," +
                    "{date: 'C', frequency: .02782, date: '3-May-14', close: 3}," +
                    "{date: 'D', frequency: .04253, date: '4-May-15', close: 5}," +
                    "{date: 'D', frequency: .04253, date: '5-May-15', close: 4}," +
                    "{date: 'D', frequency: .04253, date: '7-May-15', close: 2},]";
        return s;
    }
    

    请查看here 以获取如何在JSAndroid 之间建立桥梁的参考

    【讨论】:

    • 谢谢,但知道我得到了 Uncaught SyntaxError: Unexpected token d at file:///android_asset/line.html:1。当我将 json 硬编码为 var data =[...] 添加时,它可以工作。此错误仅在我使用界面时发生
    • @ilan 现在不是 Android 的问题,是 JSON 的问题。您可以从检查它是否有效开始。如果你检查调试器,你会发现,至少你从getData 得到结果,这意味着接口工作正常。
    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 2014-07-21
    • 2013-12-06
    相关资源
    最近更新 更多