【问题标题】:Can't send a variable to javascript from java无法从java将变量发送到javascript
【发布时间】:2013-08-20 03:21:57
【问题描述】:

我正在获取一个 url 并尝试将其文本内容发送到 webview 中的 javascript 函数。

我从 java 代码中执行此操作:

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://volteck.net");
// Get the response
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String response_str = client.execute(request, responseHandler);

response_str = response_str.replaceAll("\n", "\\");
// this is because js don't support multi-line strings

myWebView.loadUrl("javascript:myfunction('" + response_str + "')");
System.out.println("javascript:myfunction('" + response_str + "')");

这是 webview 中的代码:

function myfunction(val){
    document.body.innerHTML = val.length;
    }

到目前为止,我只是想获取文本长度。但是当我使用之前代码的 url 时,什么也没有发生。我从日志中得到这个:

08-19 23:55:03.141:I/dalvikvm-heap(1846):将堆(碎片情况)增加到 3.551MB,分配 262160 字节 08-19 23:55:03.351: D/dalvikvm(1846): GC_FOR_MALLOC 在 209 毫秒内释放了 0 个对象/0 个字节

但奇怪的是,如果我尝试获取 volteck.net/ip,它只包含一个 IP 号码,它工作得很好!

非常感谢 Java 新手。

【问题讨论】:

  • 您是否尝试通过 system.out 打印出来来调用 js?
  • 我在发布问题时不小心删除了在webview中调用js函数的行,现在已编辑,对此感到抱歉。

标签: java javascript android webview


【解决方案1】:

试试这个:

ScriptEngineManager manager = new ScriptEngineManager();   
ScriptEngine engine = manager.getEngineByName("JavaScript");
String script = "function myfunction(val){
document.body.innerHTML = val.length;
}";   
engine.eval(script);   
Invocable inv = (Invocable) engine;
inv.invokeFunction("myfunction", response_str );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多