首页 > 解决方案 > 上下文将数据设置为字符串并传递 javascript webview,仅适用于“数字”

问题描述

我尝试将数据从数据库传递到 webview 表单,现在可以工作,但是如果我只添加数据库中的数字,例如代码为 123,区域为 567,如果代码为 123-4,区域为法国,则 webview html 没有任何显示...任何帮助,请我想要 webview 上的数字和单词......???

MainActivity.java

void setCodeAndRegion(final String code, final String region) {
    webview.post(new Runnable() {
        @Override
        public void run() {
            webview.evaluateJavascript("javascript:setCodeAndRegion(" + code + "," + region + ");", null);
        }
    });
}

弹出对话框.java

listRegion.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            final String region = (String) listRegion.getItemAtPosition(position);
            SQLiteDatabase database = context.pdfDatabaseManager.getReadableDatabase();
            final Cursor c = database.rawQuery("Select * From " + PDFDatabaseManager.DATABASE_REGION_TABLE + " WHERE "+ PDFDatabaseManager.KEY_REGION +"='"+region+"'", null);
            String code = "";
            while (c.moveToNext())
                code = c.getString(1);

            c.close();
            context.setCodeAndRegion(code,region);
            a.dismiss();
        }
    });

.html

 var setCodeAndRegion = function(code, region){
          document.getElementById('test1').value = code;
          document.getElementById('test2').value = region;
          alert (region);
      }

标签: javascriptandroidsqlitewebview

解决方案


问题可能是您在函数中作为参数传递的值setCodeAndRegion。由于它们是字符串(至少对于该区域而言),因此您需要引号"')。

void setCodeAndRegion(final String code, final String region) {
    webview.post(new Runnable() {
        @Override
        public void run() {
            webview.evaluateJavascript("javascript:setCodeAndRegion('" + code + "', '" + region + "');", null);
        }
    });
}

还行吧:

"javascript:setCodeAndRegion('" + code + "', '" + region + "');"

这不会被 javascript 很好地解释:

"javascript:setCodeAndRegion("+ code + ", " + region + " );"

仅仅是因为 javascript 将无法将其识别为一个值。它会变成这样:

setCodeAndRegion(123-5, England );

推荐阅读