无法从java向javascript发送变量

时间:2013-08-20 03:21:58

标签: java javascript android 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):将堆(frag case)增长到3.551MB,用于262160字节分配 08-19 23:55:03.351:D / dalvikvm(1846):GC_FOR_MALLOC在209ms内释放了0个对象/ 0个字节

但奇怪的是,如果我尝试获取volteck.net/ip,它只包含一个IP号码,它就可以正常使用了!

非常感谢Java新手。

1 个答案:

答案 0 :(得分:-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 );