在Android中执行不带webview的javascript

时间:2015-03-17 01:09:58

标签: javascript android webview

我试图在我的Android应用中执行JS功能。 该功能位于网站上的.js文件中。

我没有使用webview,我想执行JS功能,因为它发送了我想要的请求。

在我的浏览器控制台中,我只需question.vote(0);,我该如何在我的应用中执行此操作?

2 个答案:

答案 0 :(得分:6)

UPDATE 2018: AndroidJSCore已被LiquidCore取代,后者基于V8。它不仅包括V8引擎,而且所有Node.js都可用。

您可以在没有WebView的情况下执行JavaScript。您可以使用AndroidJSCore。以下是如何执行此操作的快速示例:

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://your_website_here/file.js");
HttpResponse response = client.execute(request);
String js = EntityUtils.toString(response.getEntity());

JSContext context = new JSContext();
context.evaluateScript(js);
context.evaluateScript("question.vote(0);");

然而,这很可能不会在WebView之外工作,因为我认为你不仅依赖于JavaScript,而且还依赖于AJAX,它不是纯JavaScript的一部分。它需要一个浏览器实现。

您是否有理由不使用隐藏的WebView并只是注入代码?

// Create a WebView and load a page that includes your JS file
webView.evaluateJavascript("question.vote(0);", null);     

答案 1 :(得分:6)

为了将来参考,为此目的,有一个方形的库。 https://github.com/square/duktape-android

此库是Duktape可嵌入JavaScript引擎的包装器 您可以在不使用WebView的情况下运行javascript。

Duktape符合Ecmascript E5 / E5.1标准,所以可以用这个基本的东西。